diff --git a/packages/google-cloud-securitycenter/README.md b/packages/google-cloud-securitycenter/README.md
index bcc0fbf15294..f83d6db3695f 100644
--- a/packages/google-cloud-securitycenter/README.md
+++ b/packages/google-cloud-securitycenter/README.md
@@ -129,7 +129,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
 | update security marks | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1/security_center.update_security_marks.js) |
 | update source | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1/security_center.update_source.js) |
 | validate event threat detection custom module | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1/security_center.validate_event_threat_detection_custom_module.js) |
-| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1/snippet_metadata_google.cloud.securitycenter.v1.json) |
 | create finding | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1beta1/security_center.create_finding.js) |
 | create source | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1beta1/security_center.create_source.js) |
 | get iam policy | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1beta1/security_center.get_iam_policy.js) |
@@ -148,7 +147,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
 | update organization settings | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1beta1/security_center.update_organization_settings.js) |
 | update security marks | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1beta1/security_center.update_security_marks.js) |
 | update source | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1beta1/security_center.update_source.js) |
-| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1beta1/snippet_metadata_google.cloud.securitycenter.v1beta1.json) |
 | create finding | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1p1beta1/security_center.create_finding.js) |
 | create notification config | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1p1beta1/security_center.create_notification_config.js) |
 | create source | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1p1beta1/security_center.create_source.js) |
@@ -172,7 +170,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
 | update organization settings | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1p1beta1/security_center.update_organization_settings.js) |
 | update security marks | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1p1beta1/security_center.update_security_marks.js) |
 | update source | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1p1beta1/security_center.update_source.js) |
-| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v1p1beta1/snippet_metadata_google.cloud.securitycenter.v1p1beta1.json) |
 | batch create resource value configs | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v2/security_center.batch_create_resource_value_configs.js) |
 | bulk mute findings | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v2/security_center.bulk_mute_findings.js) |
 | create big query export | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v2/security_center.create_big_query_export.js) |
@@ -213,7 +210,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
 | update resource value config | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v2/security_center.update_resource_value_config.js) |
 | update security marks | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v2/security_center.update_security_marks.js) |
 | update source | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v2/security_center.update_source.js) |
-| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycenter/samples/generated/v2/snippet_metadata_google.cloud.securitycenter.v2.json) |
 
 
 ## Supported Node.js Versions
diff --git a/packages/google-cloud-securitycenter/protos/protos.js b/packages/google-cloud-securitycenter/protos/protos.js
index 89b034a5d3c9..360bd99b0dbe 100644
--- a/packages/google-cloud-securitycenter/protos/protos.js
+++ b/packages/google-cloud-securitycenter/protos/protos.js
@@ -97,7 +97,7 @@
                             this.serviceAccountDelegationInfo = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -263,9 +263,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Access.decode = function decode(reader, length, error) {
+                        Access.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Access();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -281,7 +285,7 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.callerIpGeo = $root.google.cloud.securitycenter.v1.Geolocation.decode(reader, reader.uint32());
+                                        message.callerIpGeo = $root.google.cloud.securitycenter.v1.Geolocation.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
@@ -311,7 +315,7 @@
                                 case 9: {
                                         if (!(message.serviceAccountDelegationInfo && message.serviceAccountDelegationInfo.length))
                                             message.serviceAccountDelegationInfo = [];
-                                        message.serviceAccountDelegationInfo.push($root.google.cloud.securitycenter.v1.ServiceAccountDelegationInfo.decode(reader, reader.uint32()));
+                                        message.serviceAccountDelegationInfo.push($root.google.cloud.securitycenter.v1.ServiceAccountDelegationInfo.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 11: {
@@ -319,7 +323,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -350,9 +354,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Access.verify = function verify(message) {
+                        Access.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.principalEmail != null && message.hasOwnProperty("principalEmail"))
                                 if (!$util.isString(message.principalEmail))
                                     return "principalEmail: string expected";
@@ -360,7 +368,7 @@
                                 if (!$util.isString(message.callerIp))
                                     return "callerIp: string expected";
                             if (message.callerIpGeo != null && message.hasOwnProperty("callerIpGeo")) {
-                                var error = $root.google.cloud.securitycenter.v1.Geolocation.verify(message.callerIpGeo);
+                                var error = $root.google.cloud.securitycenter.v1.Geolocation.verify(message.callerIpGeo, long + 1);
                                 if (error)
                                     return "callerIpGeo." + error;
                             }
@@ -386,7 +394,7 @@
                                 if (!Array.isArray(message.serviceAccountDelegationInfo))
                                     return "serviceAccountDelegationInfo: array expected";
                                 for (var i = 0; i < message.serviceAccountDelegationInfo.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ServiceAccountDelegationInfo.verify(message.serviceAccountDelegationInfo[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ServiceAccountDelegationInfo.verify(message.serviceAccountDelegationInfo[i], long + 1);
                                     if (error)
                                         return "serviceAccountDelegationInfo." + error;
                                 }
@@ -405,9 +413,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Access} Access
                          */
-                        Access.fromObject = function fromObject(object) {
+                        Access.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Access)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Access();
                             if (object.principalEmail != null)
                                 message.principalEmail = String(object.principalEmail);
@@ -416,7 +428,7 @@
                             if (object.callerIpGeo != null) {
                                 if (typeof object.callerIpGeo !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Access.callerIpGeo: object expected");
-                                message.callerIpGeo = $root.google.cloud.securitycenter.v1.Geolocation.fromObject(object.callerIpGeo);
+                                message.callerIpGeo = $root.google.cloud.securitycenter.v1.Geolocation.fromObject(object.callerIpGeo, long + 1);
                             }
                             if (object.userAgentFamily != null)
                                 message.userAgentFamily = String(object.userAgentFamily);
@@ -437,7 +449,7 @@
                                 for (var i = 0; i < object.serviceAccountDelegationInfo.length; ++i) {
                                     if (typeof object.serviceAccountDelegationInfo[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Access.serviceAccountDelegationInfo: object expected");
-                                    message.serviceAccountDelegationInfo[i] = $root.google.cloud.securitycenter.v1.ServiceAccountDelegationInfo.fromObject(object.serviceAccountDelegationInfo[i]);
+                                    message.serviceAccountDelegationInfo[i] = $root.google.cloud.securitycenter.v1.ServiceAccountDelegationInfo.fromObject(object.serviceAccountDelegationInfo[i], long + 1);
                                 }
                             }
                             if (object.userName != null)
@@ -550,7 +562,7 @@
                         function ServiceAccountDelegationInfo(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -625,9 +637,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ServiceAccountDelegationInfo.decode = function decode(reader, length, error) {
+                        ServiceAccountDelegationInfo.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ServiceAccountDelegationInfo();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -643,7 +659,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -674,9 +690,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ServiceAccountDelegationInfo.verify = function verify(message) {
+                        ServiceAccountDelegationInfo.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.principalEmail != null && message.hasOwnProperty("principalEmail"))
                                 if (!$util.isString(message.principalEmail))
                                     return "principalEmail: string expected";
@@ -694,9 +714,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ServiceAccountDelegationInfo} ServiceAccountDelegationInfo
                          */
-                        ServiceAccountDelegationInfo.fromObject = function fromObject(object) {
+                        ServiceAccountDelegationInfo.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ServiceAccountDelegationInfo)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ServiceAccountDelegationInfo();
                             if (object.principalEmail != null)
                                 message.principalEmail = String(object.principalEmail);
@@ -778,7 +802,7 @@
                         function Geolocation(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -843,9 +867,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Geolocation.decode = function decode(reader, length, error) {
+                        Geolocation.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Geolocation();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -857,7 +885,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -888,9 +916,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Geolocation.verify = function verify(message) {
+                        Geolocation.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.regionCode != null && message.hasOwnProperty("regionCode"))
                                 if (!$util.isString(message.regionCode))
                                     return "regionCode: string expected";
@@ -905,9 +937,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Geolocation} Geolocation
                          */
-                        Geolocation.fromObject = function fromObject(object) {
+                        Geolocation.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Geolocation)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Geolocation();
                             if (object.regionCode != null)
                                 message.regionCode = String(object.regionCode);
@@ -984,7 +1020,7 @@
                         function Application(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1059,9 +1095,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Application.decode = function decode(reader, length, error) {
+                        Application.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Application();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1077,7 +1117,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1108,9 +1148,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Application.verify = function verify(message) {
+                        Application.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.baseUri != null && message.hasOwnProperty("baseUri"))
                                 if (!$util.isString(message.baseUri))
                                     return "baseUri: string expected";
@@ -1128,9 +1172,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Application} Application
                          */
-                        Application.fromObject = function fromObject(object) {
+                        Application.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Application)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Application();
                             if (object.baseUri != null)
                                 message.baseUri = String(object.baseUri);
@@ -1220,7 +1268,7 @@
                             this.resourceProperties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1358,9 +1406,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Asset.decode = function decode(reader, length, error) {
+                        Asset.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Asset(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1372,7 +1424,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.securityCenterProperties = $root.google.cloud.securitycenter.v1.Asset.SecurityCenterProperties.decode(reader, reader.uint32());
+                                        message.securityCenterProperties = $root.google.cloud.securitycenter.v1.Asset.SecurityCenterProperties.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -1388,30 +1440,32 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.resourceProperties, key);
                                         message.resourceProperties[key] = value;
                                         break;
                                     }
                                 case 8: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 11: {
-                                        message.iamPolicy = $root.google.cloud.securitycenter.v1.Asset.IamPolicy.decode(reader, reader.uint32());
+                                        message.iamPolicy = $root.google.cloud.securitycenter.v1.Asset.IamPolicy.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 13: {
@@ -1419,7 +1473,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1450,14 +1504,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Asset.verify = function verify(message) {
+                        Asset.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.securityCenterProperties != null && message.hasOwnProperty("securityCenterProperties")) {
-                                var error = $root.google.cloud.securitycenter.v1.Asset.SecurityCenterProperties.verify(message.securityCenterProperties);
+                                var error = $root.google.cloud.securitycenter.v1.Asset.SecurityCenterProperties.verify(message.securityCenterProperties, long + 1);
                                 if (error)
                                     return "securityCenterProperties." + error;
                             }
@@ -1466,28 +1524,28 @@
                                     return "resourceProperties: object expected";
                                 var key = Object.keys(message.resourceProperties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.resourceProperties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.resourceProperties[key[i]], long + 1);
                                     if (error)
                                         return "resourceProperties." + error;
                                 }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v1.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v1.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
                             if (message.iamPolicy != null && message.hasOwnProperty("iamPolicy")) {
-                                var error = $root.google.cloud.securitycenter.v1.Asset.IamPolicy.verify(message.iamPolicy);
+                                var error = $root.google.cloud.securitycenter.v1.Asset.IamPolicy.verify(message.iamPolicy, long + 1);
                                 if (error)
                                     return "iamPolicy." + error;
                             }
@@ -1505,46 +1563,52 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Asset} Asset
                          */
-                        Asset.fromObject = function fromObject(object) {
+                        Asset.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Asset)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Asset();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.securityCenterProperties != null) {
                                 if (typeof object.securityCenterProperties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Asset.securityCenterProperties: object expected");
-                                message.securityCenterProperties = $root.google.cloud.securitycenter.v1.Asset.SecurityCenterProperties.fromObject(object.securityCenterProperties);
+                                message.securityCenterProperties = $root.google.cloud.securitycenter.v1.Asset.SecurityCenterProperties.fromObject(object.securityCenterProperties, long + 1);
                             }
                             if (object.resourceProperties) {
                                 if (typeof object.resourceProperties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Asset.resourceProperties: object expected");
                                 message.resourceProperties = {};
                                 for (var keys = Object.keys(object.resourceProperties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.resourceProperties, keys[i]);
                                     if (typeof object.resourceProperties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Asset.resourceProperties: object expected");
-                                    message.resourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.resourceProperties[keys[i]]);
+                                    message.resourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.resourceProperties[keys[i]], long + 1);
                                 }
                             }
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Asset.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Asset.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Asset.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.iamPolicy != null) {
                                 if (typeof object.iamPolicy !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Asset.iamPolicy: object expected");
-                                message.iamPolicy = $root.google.cloud.securitycenter.v1.Asset.IamPolicy.fromObject(object.iamPolicy);
+                                message.iamPolicy = $root.google.cloud.securitycenter.v1.Asset.IamPolicy.fromObject(object.iamPolicy, long + 1);
                             }
                             if (object.canonicalName != null)
                                 message.canonicalName = String(object.canonicalName);
@@ -1582,8 +1646,11 @@
                             var keys2;
                             if (message.resourceProperties && (keys2 = Object.keys(message.resourceProperties)).length) {
                                 object.resourceProperties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.resourceProperties, keys2[j]);
                                     object.resourceProperties[keys2[j]] = $root.google.protobuf.Value.toObject(message.resourceProperties[keys2[j]], options);
+                                }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks"))
                                 object.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.toObject(message.securityMarks, options);
@@ -1654,7 +1721,7 @@
                                 this.folders = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -1801,9 +1868,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            SecurityCenterProperties.decode = function decode(reader, length, error) {
+                            SecurityCenterProperties.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Asset.SecurityCenterProperties();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -1847,11 +1918,11 @@
                                     case 10: {
                                             if (!(message.folders && message.folders.length))
                                                 message.folders = [];
-                                            message.folders.push($root.google.cloud.securitycenter.v1.Folder.decode(reader, reader.uint32()));
+                                            message.folders.push($root.google.cloud.securitycenter.v1.Folder.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -1882,9 +1953,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            SecurityCenterProperties.verify = function verify(message) {
+                            SecurityCenterProperties.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.resourceName != null && message.hasOwnProperty("resourceName"))
                                     if (!$util.isString(message.resourceName))
                                         return "resourceName: string expected";
@@ -1917,7 +1992,7 @@
                                     if (!Array.isArray(message.folders))
                                         return "folders: array expected";
                                     for (var i = 0; i < message.folders.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.Folder.verify(message.folders[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.Folder.verify(message.folders[i], long + 1);
                                         if (error)
                                             return "folders." + error;
                                     }
@@ -1933,9 +2008,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Asset.SecurityCenterProperties} SecurityCenterProperties
                              */
-                            SecurityCenterProperties.fromObject = function fromObject(object) {
+                            SecurityCenterProperties.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Asset.SecurityCenterProperties)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Asset.SecurityCenterProperties();
                                 if (object.resourceName != null)
                                     message.resourceName = String(object.resourceName);
@@ -1965,7 +2044,7 @@
                                     for (var i = 0; i < object.folders.length; ++i) {
                                         if (typeof object.folders[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.Asset.SecurityCenterProperties.folders: object expected");
-                                        message.folders[i] = $root.google.cloud.securitycenter.v1.Folder.fromObject(object.folders[i]);
+                                        message.folders[i] = $root.google.cloud.securitycenter.v1.Folder.fromObject(object.folders[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -2073,7 +2152,7 @@
                             function IamPolicy(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -2138,9 +2217,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            IamPolicy.decode = function decode(reader, length, error) {
+                            IamPolicy.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Asset.IamPolicy();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -2152,7 +2235,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -2183,9 +2266,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            IamPolicy.verify = function verify(message) {
+                            IamPolicy.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.policyBlob != null && message.hasOwnProperty("policyBlob"))
                                     if (!$util.isString(message.policyBlob))
                                         return "policyBlob: string expected";
@@ -2200,9 +2287,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Asset.IamPolicy} IamPolicy
                              */
-                            IamPolicy.fromObject = function fromObject(object) {
+                            IamPolicy.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Asset.IamPolicy)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Asset.IamPolicy();
                                 if (object.policyBlob != null)
                                     message.policyBlob = String(object.policyBlob);
@@ -2282,7 +2373,7 @@
                         function Folder(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2357,9 +2448,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Folder.decode = function decode(reader, length, error) {
+                        Folder.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Folder();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2375,7 +2470,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2406,9 +2501,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Folder.verify = function verify(message) {
+                        Folder.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.resourceFolder != null && message.hasOwnProperty("resourceFolder"))
                                 if (!$util.isString(message.resourceFolder))
                                     return "resourceFolder: string expected";
@@ -2426,9 +2525,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Folder} Folder
                          */
-                        Folder.fromObject = function fromObject(object) {
+                        Folder.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Folder)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Folder();
                             if (object.resourceFolder != null)
                                 message.resourceFolder = String(object.resourceFolder);
@@ -2513,7 +2616,7 @@
                             this.marks = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2599,9 +2702,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityMarks.decode = function decode(reader, length, error) {
+                        SecurityMarks.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SecurityMarks(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2628,10 +2735,12 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.marks, key);
                                         message.marks[key] = value;
                                         break;
                                     }
@@ -2640,7 +2749,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2671,9 +2780,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityMarks.verify = function verify(message) {
+                        SecurityMarks.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -2699,9 +2812,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SecurityMarks} SecurityMarks
                          */
-                        SecurityMarks.fromObject = function fromObject(object) {
+                        SecurityMarks.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SecurityMarks)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SecurityMarks();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -2709,8 +2826,11 @@
                                 if (typeof object.marks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.SecurityMarks.marks: object expected");
                                 message.marks = {};
-                                for (var keys = Object.keys(object.marks), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.marks), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.marks, keys[i]);
                                     message.marks[keys[i]] = String(object.marks[keys[i]]);
+                                }
                             }
                             if (object.canonicalName != null)
                                 message.canonicalName = String(object.canonicalName);
@@ -2741,8 +2861,11 @@
                             var keys2;
                             if (message.marks && (keys2 = Object.keys(message.marks)).length) {
                                 object.marks = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.marks, keys2[j]);
                                     object.marks[keys2[j]] = message.marks[keys2[j]];
+                                }
                             }
                             if (message.canonicalName != null && message.hasOwnProperty("canonicalName"))
                                 object.canonicalName = message.canonicalName;
@@ -2804,7 +2927,7 @@
                         function AttackExposure(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2929,9 +3052,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AttackExposure.decode = function decode(reader, length, error) {
+                        AttackExposure.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AttackExposure();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2943,7 +3070,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.latestCalculationTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.latestCalculationTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -2967,7 +3094,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2998,14 +3125,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AttackExposure.verify = function verify(message) {
+                        AttackExposure.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.score != null && message.hasOwnProperty("score"))
                                 if (typeof message.score !== "number")
                                     return "score: number expected";
                             if (message.latestCalculationTime != null && message.hasOwnProperty("latestCalculationTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.latestCalculationTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.latestCalculationTime, long + 1);
                                 if (error)
                                     return "latestCalculationTime." + error;
                             }
@@ -3041,16 +3172,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.AttackExposure} AttackExposure
                          */
-                        AttackExposure.fromObject = function fromObject(object) {
+                        AttackExposure.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.AttackExposure)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.AttackExposure();
                             if (object.score != null)
                                 message.score = Number(object.score);
                             if (object.latestCalculationTime != null) {
                                 if (typeof object.latestCalculationTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.AttackExposure.latestCalculationTime: object expected");
-                                message.latestCalculationTime = $root.google.protobuf.Timestamp.fromObject(object.latestCalculationTime);
+                                message.latestCalculationTime = $root.google.protobuf.Timestamp.fromObject(object.latestCalculationTime, long + 1);
                             }
                             if (object.attackExposureResult != null)
                                 message.attackExposureResult = String(object.attackExposureResult);
@@ -3191,7 +3326,7 @@
                             this.edges = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3278,9 +3413,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AttackPath.decode = function decode(reader, length, error) {
+                        AttackPath.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AttackPath();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3294,17 +3433,17 @@
                                 case 2: {
                                         if (!(message.pathNodes && message.pathNodes.length))
                                             message.pathNodes = [];
-                                        message.pathNodes.push($root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.decode(reader, reader.uint32()));
+                                        message.pathNodes.push($root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.edges && message.edges.length))
                                             message.edges = [];
-                                        message.edges.push($root.google.cloud.securitycenter.v1.AttackPath.AttackPathEdge.decode(reader, reader.uint32()));
+                                        message.edges.push($root.google.cloud.securitycenter.v1.AttackPath.AttackPathEdge.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3335,9 +3474,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AttackPath.verify = function verify(message) {
+                        AttackPath.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -3345,7 +3488,7 @@
                                 if (!Array.isArray(message.pathNodes))
                                     return "pathNodes: array expected";
                                 for (var i = 0; i < message.pathNodes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.verify(message.pathNodes[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.verify(message.pathNodes[i], long + 1);
                                     if (error)
                                         return "pathNodes." + error;
                                 }
@@ -3354,7 +3497,7 @@
                                 if (!Array.isArray(message.edges))
                                     return "edges: array expected";
                                 for (var i = 0; i < message.edges.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathEdge.verify(message.edges[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathEdge.verify(message.edges[i], long + 1);
                                     if (error)
                                         return "edges." + error;
                                 }
@@ -3370,9 +3513,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.AttackPath} AttackPath
                          */
-                        AttackPath.fromObject = function fromObject(object) {
+                        AttackPath.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.AttackPath)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.AttackPath();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -3383,7 +3530,7 @@
                                 for (var i = 0; i < object.pathNodes.length; ++i) {
                                     if (typeof object.pathNodes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.AttackPath.pathNodes: object expected");
-                                    message.pathNodes[i] = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.fromObject(object.pathNodes[i]);
+                                    message.pathNodes[i] = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.fromObject(object.pathNodes[i], long + 1);
                                 }
                             }
                             if (object.edges) {
@@ -3393,7 +3540,7 @@
                                 for (var i = 0; i < object.edges.length; ++i) {
                                     if (typeof object.edges[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.AttackPath.edges: object expected");
-                                    message.edges[i] = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathEdge.fromObject(object.edges[i]);
+                                    message.edges[i] = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathEdge.fromObject(object.edges[i], long + 1);
                                 }
                             }
                             return message;
@@ -3486,7 +3633,7 @@
                                 this.attackSteps = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -3603,9 +3750,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AttackPathNode.decode = function decode(reader, length, error) {
+                            AttackPathNode.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -3627,7 +3778,7 @@
                                     case 4: {
                                             if (!(message.associatedFindings && message.associatedFindings.length))
                                                 message.associatedFindings = [];
-                                            message.associatedFindings.push($root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding.decode(reader, reader.uint32()));
+                                            message.associatedFindings.push($root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     case 5: {
@@ -3637,11 +3788,11 @@
                                     case 6: {
                                             if (!(message.attackSteps && message.attackSteps.length))
                                                 message.attackSteps = [];
-                                            message.attackSteps.push($root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode.decode(reader, reader.uint32()));
+                                            message.attackSteps.push($root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -3672,9 +3823,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AttackPathNode.verify = function verify(message) {
+                            AttackPathNode.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.resource != null && message.hasOwnProperty("resource"))
                                     if (!$util.isString(message.resource))
                                         return "resource: string expected";
@@ -3688,7 +3843,7 @@
                                     if (!Array.isArray(message.associatedFindings))
                                         return "associatedFindings: array expected";
                                     for (var i = 0; i < message.associatedFindings.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding.verify(message.associatedFindings[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding.verify(message.associatedFindings[i], long + 1);
                                         if (error)
                                             return "associatedFindings." + error;
                                     }
@@ -3700,7 +3855,7 @@
                                     if (!Array.isArray(message.attackSteps))
                                         return "attackSteps: array expected";
                                     for (var i = 0; i < message.attackSteps.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode.verify(message.attackSteps[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode.verify(message.attackSteps[i], long + 1);
                                         if (error)
                                             return "attackSteps." + error;
                                     }
@@ -3716,9 +3871,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.AttackPath.AttackPathNode} AttackPathNode
                              */
-                            AttackPathNode.fromObject = function fromObject(object) {
+                            AttackPathNode.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode();
                                 if (object.resource != null)
                                     message.resource = String(object.resource);
@@ -3733,7 +3892,7 @@
                                     for (var i = 0; i < object.associatedFindings.length; ++i) {
                                         if (typeof object.associatedFindings[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.AttackPath.AttackPathNode.associatedFindings: object expected");
-                                        message.associatedFindings[i] = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding.fromObject(object.associatedFindings[i]);
+                                        message.associatedFindings[i] = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding.fromObject(object.associatedFindings[i], long + 1);
                                     }
                                 }
                                 if (object.uuid != null)
@@ -3745,7 +3904,7 @@
                                     for (var i = 0; i < object.attackSteps.length; ++i) {
                                         if (typeof object.attackSteps[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.AttackPath.AttackPathNode.attackSteps: object expected");
-                                        message.attackSteps[i] = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode.fromObject(object.attackSteps[i]);
+                                        message.attackSteps[i] = $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode.fromObject(object.attackSteps[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -3843,7 +4002,7 @@
                                 function PathNodeAssociatedFinding(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -3928,9 +4087,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                PathNodeAssociatedFinding.decode = function decode(reader, length, error) {
+                                PathNodeAssociatedFinding.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -3950,7 +4113,7 @@
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -3981,9 +4144,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                PathNodeAssociatedFinding.verify = function verify(message) {
+                                PathNodeAssociatedFinding.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.canonicalFinding != null && message.hasOwnProperty("canonicalFinding"))
                                         if (!$util.isString(message.canonicalFinding))
                                             return "canonicalFinding: string expected";
@@ -4004,9 +4171,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding} PathNodeAssociatedFinding
                                  */
-                                PathNodeAssociatedFinding.fromObject = function fromObject(object) {
+                                PathNodeAssociatedFinding.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.PathNodeAssociatedFinding();
                                     if (object.canonicalFinding != null)
                                         message.canonicalFinding = String(object.canonicalFinding);
@@ -4118,7 +4289,7 @@
                                     this.labels = {};
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -4224,9 +4395,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                AttackStepNode.decode = function decode(reader, length, error) {
+                                AttackStepNode.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode(), key, value;
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -4261,10 +4436,12 @@
                                                         value = reader.string();
                                                         break;
                                                     default:
-                                                        reader.skipType(tag2 & 7);
+                                                        reader.skipType(tag2 & 7, long);
                                                         break;
                                                     }
                                                 }
+                                                if (key === "__proto__")
+                                                    $util.makeProp(message.labels, key);
                                                 message.labels[key] = value;
                                                 break;
                                             }
@@ -4273,7 +4450,7 @@
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -4304,9 +4481,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                AttackStepNode.verify = function verify(message) {
+                                AttackStepNode.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.uuid != null && message.hasOwnProperty("uuid"))
                                         if (!$util.isString(message.uuid))
                                             return "uuid: string expected";
@@ -4346,9 +4527,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode} AttackStepNode
                                  */
-                                AttackStepNode.fromObject = function fromObject(object) {
+                                AttackStepNode.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode();
                                     if (object.uuid != null)
                                         message.uuid = String(object.uuid);
@@ -4386,8 +4571,11 @@
                                         if (typeof object.labels !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.AttackPath.AttackPathNode.AttackStepNode.labels: object expected");
                                         message.labels = {};
-                                        for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i)
+                                        for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) {
+                                            if (keys[i] === "__proto__")
+                                                $util.makeProp(message.labels, keys[i]);
                                             message.labels[keys[i]] = String(object.labels[keys[i]]);
+                                        }
                                     }
                                     if (object.description != null)
                                         message.description = String(object.description);
@@ -4424,8 +4612,11 @@
                                     var keys2;
                                     if (message.labels && (keys2 = Object.keys(message.labels)).length) {
                                         object.labels = {};
-                                        for (var j = 0; j < keys2.length; ++j)
+                                        for (var j = 0; j < keys2.length; ++j) {
+                                            if (keys2[j] === "__proto__")
+                                                $util.makeProp(object.labels, keys2[j]);
                                             object.labels[keys2[j]] = message.labels[keys2[j]];
+                                        }
                                     }
                                     if (message.description != null && message.hasOwnProperty("description"))
                                         object.description = message.description;
@@ -4485,7 +4676,7 @@
                             function AttackPathEdge(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -4560,9 +4751,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AttackPathEdge.decode = function decode(reader, length, error) {
+                            AttackPathEdge.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AttackPath.AttackPathEdge();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -4578,7 +4773,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -4609,9 +4804,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AttackPathEdge.verify = function verify(message) {
+                            AttackPathEdge.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.source != null && message.hasOwnProperty("source"))
                                     if (!$util.isString(message.source))
                                         return "source: string expected";
@@ -4629,9 +4828,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.AttackPath.AttackPathEdge} AttackPathEdge
                              */
-                            AttackPathEdge.fromObject = function fromObject(object) {
+                            AttackPathEdge.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.AttackPath.AttackPathEdge)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.AttackPath.AttackPathEdge();
                                 if (object.source != null)
                                     message.source = String(object.source);
@@ -4728,7 +4931,7 @@
                             this.policyOptions = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4886,9 +5089,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BackupDisasterRecovery.decode = function decode(reader, length, error) {
+                        BackupDisasterRecovery.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.BackupDisasterRecovery();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4938,11 +5145,11 @@
                                         break;
                                     }
                                 case 10: {
-                                        message.backupCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.backupCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4973,9 +5180,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BackupDisasterRecovery.verify = function verify(message) {
+                        BackupDisasterRecovery.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.backupTemplate != null && message.hasOwnProperty("backupTemplate"))
                                 if (!$util.isString(message.backupTemplate))
                                     return "backupTemplate: string expected";
@@ -5016,7 +5227,7 @@
                                 if (!$util.isString(message.backupType))
                                     return "backupType: string expected";
                             if (message.backupCreateTime != null && message.hasOwnProperty("backupCreateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.backupCreateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.backupCreateTime, long + 1);
                                 if (error)
                                     return "backupCreateTime." + error;
                             }
@@ -5031,9 +5242,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.BackupDisasterRecovery} BackupDisasterRecovery
                          */
-                        BackupDisasterRecovery.fromObject = function fromObject(object) {
+                        BackupDisasterRecovery.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.BackupDisasterRecovery)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.BackupDisasterRecovery();
                             if (object.backupTemplate != null)
                                 message.backupTemplate = String(object.backupTemplate);
@@ -5071,7 +5286,7 @@
                             if (object.backupCreateTime != null) {
                                 if (typeof object.backupCreateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.BackupDisasterRecovery.backupCreateTime: object expected");
-                                message.backupCreateTime = $root.google.protobuf.Timestamp.fromObject(object.backupCreateTime);
+                                message.backupCreateTime = $root.google.protobuf.Timestamp.fromObject(object.backupCreateTime, long + 1);
                             }
                             return message;
                         };
@@ -5191,7 +5406,7 @@
                         function BigQueryExport(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5326,9 +5541,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BigQueryExport.decode = function decode(reader, length, error) {
+                        BigQueryExport.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.BigQueryExport();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5352,11 +5571,11 @@
                                         break;
                                     }
                                 case 5: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -5368,7 +5587,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5399,9 +5618,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BigQueryExport.verify = function verify(message) {
+                        BigQueryExport.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -5415,12 +5638,12 @@
                                 if (!$util.isString(message.dataset))
                                     return "dataset: string expected";
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -5441,9 +5664,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.BigQueryExport} BigQueryExport
                          */
-                        BigQueryExport.fromObject = function fromObject(object) {
+                        BigQueryExport.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.BigQueryExport)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.BigQueryExport();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -5456,12 +5683,12 @@
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.BigQueryExport.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.BigQueryExport.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.mostRecentEditor != null)
                                 message.mostRecentEditor = String(object.mostRecentEditor);
@@ -5562,7 +5789,7 @@
                             this.relatedFindings = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5628,9 +5855,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Chokepoint.decode = function decode(reader, length, error) {
+                        Chokepoint.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Chokepoint();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5644,7 +5875,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5675,9 +5906,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Chokepoint.verify = function verify(message) {
+                        Chokepoint.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.relatedFindings != null && message.hasOwnProperty("relatedFindings")) {
                                 if (!Array.isArray(message.relatedFindings))
                                     return "relatedFindings: array expected";
@@ -5696,9 +5931,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Chokepoint} Chokepoint
                          */
-                        Chokepoint.fromObject = function fromObject(object) {
+                        Chokepoint.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Chokepoint)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Chokepoint();
                             if (object.relatedFindings) {
                                 if (!Array.isArray(object.relatedFindings))
@@ -5787,7 +6026,7 @@
                         function CloudArmor(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5902,9 +6141,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CloudArmor.decode = function decode(reader, length, error) {
+                        CloudArmor.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CloudArmor();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5912,19 +6155,19 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.securityPolicy = $root.google.cloud.securitycenter.v1.SecurityPolicy.decode(reader, reader.uint32());
+                                        message.securityPolicy = $root.google.cloud.securitycenter.v1.SecurityPolicy.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.requests = $root.google.cloud.securitycenter.v1.Requests.decode(reader, reader.uint32());
+                                        message.requests = $root.google.cloud.securitycenter.v1.Requests.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.adaptiveProtection = $root.google.cloud.securitycenter.v1.AdaptiveProtection.decode(reader, reader.uint32());
+                                        message.adaptiveProtection = $root.google.cloud.securitycenter.v1.AdaptiveProtection.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
-                                        message.attack = $root.google.cloud.securitycenter.v1.Attack.decode(reader, reader.uint32());
+                                        message.attack = $root.google.cloud.securitycenter.v1.Attack.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
@@ -5932,11 +6175,11 @@
                                         break;
                                     }
                                 case 6: {
-                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5967,26 +6210,30 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CloudArmor.verify = function verify(message) {
+                        CloudArmor.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityPolicy != null && message.hasOwnProperty("securityPolicy")) {
-                                var error = $root.google.cloud.securitycenter.v1.SecurityPolicy.verify(message.securityPolicy);
+                                var error = $root.google.cloud.securitycenter.v1.SecurityPolicy.verify(message.securityPolicy, long + 1);
                                 if (error)
                                     return "securityPolicy." + error;
                             }
                             if (message.requests != null && message.hasOwnProperty("requests")) {
-                                var error = $root.google.cloud.securitycenter.v1.Requests.verify(message.requests);
+                                var error = $root.google.cloud.securitycenter.v1.Requests.verify(message.requests, long + 1);
                                 if (error)
                                     return "requests." + error;
                             }
                             if (message.adaptiveProtection != null && message.hasOwnProperty("adaptiveProtection")) {
-                                var error = $root.google.cloud.securitycenter.v1.AdaptiveProtection.verify(message.adaptiveProtection);
+                                var error = $root.google.cloud.securitycenter.v1.AdaptiveProtection.verify(message.adaptiveProtection, long + 1);
                                 if (error)
                                     return "adaptiveProtection." + error;
                             }
                             if (message.attack != null && message.hasOwnProperty("attack")) {
-                                var error = $root.google.cloud.securitycenter.v1.Attack.verify(message.attack);
+                                var error = $root.google.cloud.securitycenter.v1.Attack.verify(message.attack, long + 1);
                                 if (error)
                                     return "attack." + error;
                             }
@@ -5994,7 +6241,7 @@
                                 if (!$util.isString(message.threatVector))
                                     return "threatVector: string expected";
                             if (message.duration != null && message.hasOwnProperty("duration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.duration);
+                                var error = $root.google.protobuf.Duration.verify(message.duration, long + 1);
                                 if (error)
                                     return "duration." + error;
                             }
@@ -6009,36 +6256,40 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CloudArmor} CloudArmor
                          */
-                        CloudArmor.fromObject = function fromObject(object) {
+                        CloudArmor.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CloudArmor)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CloudArmor();
                             if (object.securityPolicy != null) {
                                 if (typeof object.securityPolicy !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CloudArmor.securityPolicy: object expected");
-                                message.securityPolicy = $root.google.cloud.securitycenter.v1.SecurityPolicy.fromObject(object.securityPolicy);
+                                message.securityPolicy = $root.google.cloud.securitycenter.v1.SecurityPolicy.fromObject(object.securityPolicy, long + 1);
                             }
                             if (object.requests != null) {
                                 if (typeof object.requests !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CloudArmor.requests: object expected");
-                                message.requests = $root.google.cloud.securitycenter.v1.Requests.fromObject(object.requests);
+                                message.requests = $root.google.cloud.securitycenter.v1.Requests.fromObject(object.requests, long + 1);
                             }
                             if (object.adaptiveProtection != null) {
                                 if (typeof object.adaptiveProtection !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CloudArmor.adaptiveProtection: object expected");
-                                message.adaptiveProtection = $root.google.cloud.securitycenter.v1.AdaptiveProtection.fromObject(object.adaptiveProtection);
+                                message.adaptiveProtection = $root.google.cloud.securitycenter.v1.AdaptiveProtection.fromObject(object.adaptiveProtection, long + 1);
                             }
                             if (object.attack != null) {
                                 if (typeof object.attack !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CloudArmor.attack: object expected");
-                                message.attack = $root.google.cloud.securitycenter.v1.Attack.fromObject(object.attack);
+                                message.attack = $root.google.cloud.securitycenter.v1.Attack.fromObject(object.attack, long + 1);
                             }
                             if (object.threatVector != null)
                                 message.threatVector = String(object.threatVector);
                             if (object.duration != null) {
                                 if (typeof object.duration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CloudArmor.duration: object expected");
-                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration);
+                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration, long + 1);
                             }
                             return message;
                         };
@@ -6130,7 +6381,7 @@
                         function SecurityPolicy(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6215,9 +6466,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityPolicy.decode = function decode(reader, length, error) {
+                        SecurityPolicy.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SecurityPolicy();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6237,7 +6492,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -6268,9 +6523,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityPolicy.verify = function verify(message) {
+                        SecurityPolicy.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -6291,9 +6550,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SecurityPolicy} SecurityPolicy
                          */
-                        SecurityPolicy.fromObject = function fromObject(object) {
+                        SecurityPolicy.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SecurityPolicy)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SecurityPolicy();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -6383,7 +6646,7 @@
                         function Requests(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6478,9 +6741,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Requests.decode = function decode(reader, length, error) {
+                        Requests.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Requests();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6504,7 +6771,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -6535,9 +6802,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Requests.verify = function verify(message) {
+                        Requests.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.ratio != null && message.hasOwnProperty("ratio"))
                                 if (typeof message.ratio !== "number")
                                     return "ratio: number expected";
@@ -6561,9 +6832,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Requests} Requests
                          */
-                        Requests.fromObject = function fromObject(object) {
+                        Requests.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Requests)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Requests();
                             if (object.ratio != null)
                                 message.ratio = Number(object.ratio);
@@ -6655,7 +6930,7 @@
                         function AdaptiveProtection(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6720,9 +6995,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AdaptiveProtection.decode = function decode(reader, length, error) {
+                        AdaptiveProtection.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AdaptiveProtection();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6734,7 +7013,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -6765,9 +7044,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AdaptiveProtection.verify = function verify(message) {
+                        AdaptiveProtection.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.confidence != null && message.hasOwnProperty("confidence"))
                                 if (typeof message.confidence !== "number")
                                     return "confidence: number expected";
@@ -6782,9 +7065,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.AdaptiveProtection} AdaptiveProtection
                          */
-                        AdaptiveProtection.fromObject = function fromObject(object) {
+                        AdaptiveProtection.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.AdaptiveProtection)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.AdaptiveProtection();
                             if (object.confidence != null)
                                 message.confidence = Number(object.confidence);
@@ -6862,7 +7149,7 @@
                         function Attack(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6947,9 +7234,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Attack.decode = function decode(reader, length, error) {
+                        Attack.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Attack();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6969,7 +7260,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -7000,9 +7291,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Attack.verify = function verify(message) {
+                        Attack.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.volumePps != null && message.hasOwnProperty("volumePps"))
                                 if (!$util.isInteger(message.volumePps))
                                     return "volumePps: integer expected";
@@ -7023,9 +7318,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Attack} Attack
                          */
-                        Attack.fromObject = function fromObject(object) {
+                        Attack.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Attack)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Attack();
                             if (object.volumePps != null)
                                 message.volumePps = object.volumePps | 0;
@@ -7115,7 +7414,7 @@
                             this.infoTypes = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -7201,9 +7500,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CloudDlpDataProfile.decode = function decode(reader, length, error) {
+                        CloudDlpDataProfile.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CloudDlpDataProfile();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -7221,11 +7524,11 @@
                                 case 3: {
                                         if (!(message.infoTypes && message.infoTypes.length))
                                             message.infoTypes = [];
-                                        message.infoTypes.push($root.google.cloud.securitycenter.v1.InfoType.decode(reader, reader.uint32()));
+                                        message.infoTypes.push($root.google.cloud.securitycenter.v1.InfoType.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -7256,9 +7559,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CloudDlpDataProfile.verify = function verify(message) {
+                        CloudDlpDataProfile.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.dataProfile != null && message.hasOwnProperty("dataProfile"))
                                 if (!$util.isString(message.dataProfile))
                                     return "dataProfile: string expected";
@@ -7275,7 +7582,7 @@
                                 if (!Array.isArray(message.infoTypes))
                                     return "infoTypes: array expected";
                                 for (var i = 0; i < message.infoTypes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.InfoType.verify(message.infoTypes[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.InfoType.verify(message.infoTypes[i], long + 1);
                                     if (error)
                                         return "infoTypes." + error;
                                 }
@@ -7291,9 +7598,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CloudDlpDataProfile} CloudDlpDataProfile
                          */
-                        CloudDlpDataProfile.fromObject = function fromObject(object) {
+                        CloudDlpDataProfile.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CloudDlpDataProfile)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CloudDlpDataProfile();
                             if (object.dataProfile != null)
                                 message.dataProfile = String(object.dataProfile);
@@ -7324,7 +7635,7 @@
                                 for (var i = 0; i < object.infoTypes.length; ++i) {
                                     if (typeof object.infoTypes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.CloudDlpDataProfile.infoTypes: object expected");
-                                    message.infoTypes[i] = $root.google.cloud.securitycenter.v1.InfoType.fromObject(object.infoTypes[i]);
+                                    message.infoTypes[i] = $root.google.cloud.securitycenter.v1.InfoType.fromObject(object.infoTypes[i], long + 1);
                                 }
                             }
                             return message;
@@ -7428,7 +7739,7 @@
                         function InfoType(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -7513,9 +7824,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        InfoType.decode = function decode(reader, length, error) {
+                        InfoType.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.InfoType();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -7531,11 +7846,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.sensitivityScore = $root.google.cloud.securitycenter.v1.SensitivityScore.decode(reader, reader.uint32());
+                                        message.sensitivityScore = $root.google.cloud.securitycenter.v1.SensitivityScore.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -7566,9 +7881,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        InfoType.verify = function verify(message) {
+                        InfoType.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -7576,7 +7895,7 @@
                                 if (!$util.isString(message.version))
                                     return "version: string expected";
                             if (message.sensitivityScore != null && message.hasOwnProperty("sensitivityScore")) {
-                                var error = $root.google.cloud.securitycenter.v1.SensitivityScore.verify(message.sensitivityScore);
+                                var error = $root.google.cloud.securitycenter.v1.SensitivityScore.verify(message.sensitivityScore, long + 1);
                                 if (error)
                                     return "sensitivityScore." + error;
                             }
@@ -7591,9 +7910,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.InfoType} InfoType
                          */
-                        InfoType.fromObject = function fromObject(object) {
+                        InfoType.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.InfoType)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.InfoType();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -7602,7 +7925,7 @@
                             if (object.sensitivityScore != null) {
                                 if (typeof object.sensitivityScore !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.InfoType.sensitivityScore: object expected");
-                                message.sensitivityScore = $root.google.cloud.securitycenter.v1.SensitivityScore.fromObject(object.sensitivityScore);
+                                message.sensitivityScore = $root.google.cloud.securitycenter.v1.SensitivityScore.fromObject(object.sensitivityScore, long + 1);
                             }
                             return message;
                         };
@@ -7683,7 +8006,7 @@
                         function SensitivityScore(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -7748,9 +8071,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SensitivityScore.decode = function decode(reader, length, error) {
+                        SensitivityScore.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SensitivityScore();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -7762,7 +8089,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -7793,9 +8120,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SensitivityScore.verify = function verify(message) {
+                        SensitivityScore.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.score != null && message.hasOwnProperty("score"))
                                 switch (message.score) {
                                 default:
@@ -7818,9 +8149,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SensitivityScore} SensitivityScore
                          */
-                        SensitivityScore.fromObject = function fromObject(object) {
+                        SensitivityScore.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SensitivityScore)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SensitivityScore();
                             switch (object.score) {
                             default:
@@ -7945,7 +8280,7 @@
                         function CloudDlpInspection(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8040,9 +8375,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CloudDlpInspection.decode = function decode(reader, length, error) {
+                        CloudDlpInspection.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CloudDlpInspection();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -8066,7 +8405,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -8097,9 +8436,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CloudDlpInspection.verify = function verify(message) {
+                        CloudDlpInspection.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.inspectJob != null && message.hasOwnProperty("inspectJob"))
                                 if (!$util.isString(message.inspectJob))
                                     return "inspectJob: string expected";
@@ -8123,9 +8466,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CloudDlpInspection} CloudDlpInspection
                          */
-                        CloudDlpInspection.fromObject = function fromObject(object) {
+                        CloudDlpInspection.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CloudDlpInspection)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CloudDlpInspection();
                             if (object.inspectJob != null)
                                 message.inspectJob = String(object.inspectJob);
@@ -8234,7 +8581,7 @@
                             this.ids = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8320,9 +8667,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Compliance.decode = function decode(reader, length, error) {
+                        Compliance.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Compliance();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -8344,7 +8695,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -8375,9 +8726,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Compliance.verify = function verify(message) {
+                        Compliance.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.standard != null && message.hasOwnProperty("standard"))
                                 if (!$util.isString(message.standard))
                                     return "standard: string expected";
@@ -8402,9 +8757,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Compliance} Compliance
                          */
-                        Compliance.fromObject = function fromObject(object) {
+                        Compliance.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Compliance)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Compliance();
                             if (object.standard != null)
                                 message.standard = String(object.standard);
@@ -8504,7 +8863,7 @@
                         function Connection(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8609,9 +8968,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Connection.decode = function decode(reader, length, error) {
+                        Connection.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Connection();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -8639,7 +9002,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -8670,9 +9033,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Connection.verify = function verify(message) {
+                        Connection.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.destinationIp != null && message.hasOwnProperty("destinationIp"))
                                 if (!$util.isString(message.destinationIp))
                                     return "destinationIp: string expected";
@@ -8708,9 +9075,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Connection} Connection
                          */
-                        Connection.fromObject = function fromObject(object) {
+                        Connection.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Connection)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Connection();
                             if (object.destinationIp != null)
                                 message.destinationIp = String(object.destinationIp);
@@ -8860,7 +9231,7 @@
                             this.contacts = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8926,9 +9297,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ContactDetails.decode = function decode(reader, length, error) {
+                        ContactDetails.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ContactDetails();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -8938,11 +9313,11 @@
                                 case 1: {
                                         if (!(message.contacts && message.contacts.length))
                                             message.contacts = [];
-                                        message.contacts.push($root.google.cloud.securitycenter.v1.Contact.decode(reader, reader.uint32()));
+                                        message.contacts.push($root.google.cloud.securitycenter.v1.Contact.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -8973,14 +9348,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ContactDetails.verify = function verify(message) {
+                        ContactDetails.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.contacts != null && message.hasOwnProperty("contacts")) {
                                 if (!Array.isArray(message.contacts))
                                     return "contacts: array expected";
                                 for (var i = 0; i < message.contacts.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Contact.verify(message.contacts[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Contact.verify(message.contacts[i], long + 1);
                                     if (error)
                                         return "contacts." + error;
                                 }
@@ -8996,9 +9375,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ContactDetails} ContactDetails
                          */
-                        ContactDetails.fromObject = function fromObject(object) {
+                        ContactDetails.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ContactDetails)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ContactDetails();
                             if (object.contacts) {
                                 if (!Array.isArray(object.contacts))
@@ -9007,7 +9390,7 @@
                                 for (var i = 0; i < object.contacts.length; ++i) {
                                     if (typeof object.contacts[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ContactDetails.contacts: object expected");
-                                    message.contacts[i] = $root.google.cloud.securitycenter.v1.Contact.fromObject(object.contacts[i]);
+                                    message.contacts[i] = $root.google.cloud.securitycenter.v1.Contact.fromObject(object.contacts[i], long + 1);
                                 }
                             }
                             return message;
@@ -9085,7 +9468,7 @@
                         function Contact(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9150,9 +9533,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Contact.decode = function decode(reader, length, error) {
+                        Contact.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Contact();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9164,7 +9551,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9195,9 +9582,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Contact.verify = function verify(message) {
+                        Contact.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.email != null && message.hasOwnProperty("email"))
                                 if (!$util.isString(message.email))
                                     return "email: string expected";
@@ -9212,9 +9603,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Contact} Contact
                          */
-                        Contact.fromObject = function fromObject(object) {
+                        Contact.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Contact)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Contact();
                             if (object.email != null)
                                 message.email = String(object.email);
@@ -9295,7 +9690,7 @@
                             this.labels = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9401,9 +9796,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Container.decode = function decode(reader, length, error) {
+                        Container.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Container();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9425,15 +9824,15 @@
                                 case 4: {
                                         if (!(message.labels && message.labels.length))
                                             message.labels = [];
-                                        message.labels.push($root.google.cloud.securitycenter.v1.Label.decode(reader, reader.uint32()));
+                                        message.labels.push($root.google.cloud.securitycenter.v1.Label.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 5: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9464,9 +9863,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Container.verify = function verify(message) {
+                        Container.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -9480,13 +9883,13 @@
                                 if (!Array.isArray(message.labels))
                                     return "labels: array expected";
                                 for (var i = 0; i < message.labels.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Label.verify(message.labels[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Label.verify(message.labels[i], long + 1);
                                     if (error)
                                         return "labels." + error;
                                 }
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
@@ -9501,9 +9904,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Container} Container
                          */
-                        Container.fromObject = function fromObject(object) {
+                        Container.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Container)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Container();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -9518,13 +9925,13 @@
                                 for (var i = 0; i < object.labels.length; ++i) {
                                     if (typeof object.labels[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Container.labels: object expected");
-                                    message.labels[i] = $root.google.cloud.securitycenter.v1.Label.fromObject(object.labels[i]);
+                                    message.labels[i] = $root.google.cloud.securitycenter.v1.Label.fromObject(object.labels[i], long + 1);
                                 }
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Container.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             return message;
                         };
@@ -9616,7 +10023,7 @@
                         function Label(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9691,9 +10098,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Label.decode = function decode(reader, length, error) {
+                        Label.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Label();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9709,7 +10120,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9740,9 +10151,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Label.verify = function verify(message) {
+                        Label.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -9760,9 +10175,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Label} Label
                          */
-                        Label.fromObject = function fromObject(object) {
+                        Label.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Label)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Label();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -9850,7 +10269,7 @@
                             this.grantees = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9966,9 +10385,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Database.decode = function decode(reader, length, error) {
+                        Database.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Database();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10002,7 +10425,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10033,9 +10456,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Database.verify = function verify(message) {
+                        Database.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -10069,9 +10496,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Database} Database
                          */
-                        Database.fromObject = function fromObject(object) {
+                        Database.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Database)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Database();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -10187,7 +10618,7 @@
                         function EffectiveEventThreatDetectionCustomModule(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10302,9 +10733,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EffectiveEventThreatDetectionCustomModule.decode = function decode(reader, length, error) {
+                        EffectiveEventThreatDetectionCustomModule.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10316,7 +10751,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.config = $root.google.protobuf.Struct.decode(reader, reader.uint32());
+                                        message.config = $root.google.protobuf.Struct.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -10336,7 +10771,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10367,14 +10802,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EffectiveEventThreatDetectionCustomModule.verify = function verify(message) {
+                        EffectiveEventThreatDetectionCustomModule.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.config != null && message.hasOwnProperty("config")) {
-                                var error = $root.google.protobuf.Struct.verify(message.config);
+                                var error = $root.google.protobuf.Struct.verify(message.config, long + 1);
                                 if (error)
                                     return "config." + error;
                             }
@@ -10407,16 +10846,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule} EffectiveEventThreatDetectionCustomModule
                          */
-                        EffectiveEventThreatDetectionCustomModule.fromObject = function fromObject(object) {
+                        EffectiveEventThreatDetectionCustomModule.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.config != null) {
                                 if (typeof object.config !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule.config: object expected");
-                                message.config = $root.google.protobuf.Struct.fromObject(object.config);
+                                message.config = $root.google.protobuf.Struct.fromObject(object.config, long + 1);
                             }
                             switch (object.enablementState) {
                             default:
@@ -10551,7 +10994,7 @@
                         function EffectiveSecurityHealthAnalyticsCustomModule(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10646,9 +11089,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EffectiveSecurityHealthAnalyticsCustomModule.decode = function decode(reader, length, error) {
+                        EffectiveSecurityHealthAnalyticsCustomModule.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10660,7 +11107,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.decode(reader, reader.uint32());
+                                        message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -10672,7 +11119,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10703,14 +11150,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EffectiveSecurityHealthAnalyticsCustomModule.verify = function verify(message) {
+                        EffectiveSecurityHealthAnalyticsCustomModule.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.customConfig != null && message.hasOwnProperty("customConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.verify(message.customConfig);
+                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.verify(message.customConfig, long + 1);
                                 if (error)
                                     return "customConfig." + error;
                             }
@@ -10737,16 +11188,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule} EffectiveSecurityHealthAnalyticsCustomModule
                          */
-                        EffectiveSecurityHealthAnalyticsCustomModule.fromObject = function fromObject(object) {
+                        EffectiveSecurityHealthAnalyticsCustomModule.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.customConfig != null) {
                                 if (typeof object.customConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule.customConfig: object expected");
-                                message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.fromObject(object.customConfig);
+                                message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.fromObject(object.customConfig, long + 1);
                             }
                             switch (object.enablementState) {
                             default:
@@ -10873,7 +11328,7 @@
                         function CustomConfig(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10988,9 +11443,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CustomConfig.decode = function decode(reader, length, error) {
+                        CustomConfig.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CustomConfig();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10998,15 +11457,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.predicate = $root.google.type.Expr.decode(reader, reader.uint32());
+                                        message.predicate = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.customOutput = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.decode(reader, reader.uint32());
+                                        message.customOutput = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.resourceSelector = $root.google.cloud.securitycenter.v1.CustomConfig.ResourceSelector.decode(reader, reader.uint32());
+                                        message.resourceSelector = $root.google.cloud.securitycenter.v1.CustomConfig.ResourceSelector.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
@@ -11022,7 +11481,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -11053,21 +11512,25 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CustomConfig.verify = function verify(message) {
+                        CustomConfig.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.predicate != null && message.hasOwnProperty("predicate")) {
-                                var error = $root.google.type.Expr.verify(message.predicate);
+                                var error = $root.google.type.Expr.verify(message.predicate, long + 1);
                                 if (error)
                                     return "predicate." + error;
                             }
                             if (message.customOutput != null && message.hasOwnProperty("customOutput")) {
-                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.verify(message.customOutput);
+                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.verify(message.customOutput, long + 1);
                                 if (error)
                                     return "customOutput." + error;
                             }
                             if (message.resourceSelector != null && message.hasOwnProperty("resourceSelector")) {
-                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.ResourceSelector.verify(message.resourceSelector);
+                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.ResourceSelector.verify(message.resourceSelector, long + 1);
                                 if (error)
                                     return "resourceSelector." + error;
                             }
@@ -11099,24 +11562,28 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CustomConfig} CustomConfig
                          */
-                        CustomConfig.fromObject = function fromObject(object) {
+                        CustomConfig.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CustomConfig)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CustomConfig();
                             if (object.predicate != null) {
                                 if (typeof object.predicate !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CustomConfig.predicate: object expected");
-                                message.predicate = $root.google.type.Expr.fromObject(object.predicate);
+                                message.predicate = $root.google.type.Expr.fromObject(object.predicate, long + 1);
                             }
                             if (object.customOutput != null) {
                                 if (typeof object.customOutput !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CustomConfig.customOutput: object expected");
-                                message.customOutput = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.fromObject(object.customOutput);
+                                message.customOutput = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.fromObject(object.customOutput, long + 1);
                             }
                             if (object.resourceSelector != null) {
                                 if (typeof object.resourceSelector !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CustomConfig.resourceSelector: object expected");
-                                message.resourceSelector = $root.google.cloud.securitycenter.v1.CustomConfig.ResourceSelector.fromObject(object.resourceSelector);
+                                message.resourceSelector = $root.google.cloud.securitycenter.v1.CustomConfig.ResourceSelector.fromObject(object.resourceSelector, long + 1);
                             }
                             switch (object.severity) {
                             default:
@@ -11236,7 +11703,7 @@
                                 this.properties = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -11302,9 +11769,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            CustomOutputSpec.decode = function decode(reader, length, error) {
+                            CustomOutputSpec.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -11314,11 +11785,11 @@
                                     case 1: {
                                             if (!(message.properties && message.properties.length))
                                                 message.properties = [];
-                                            message.properties.push($root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property.decode(reader, reader.uint32()));
+                                            message.properties.push($root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -11349,14 +11820,18 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            CustomOutputSpec.verify = function verify(message) {
+                            CustomOutputSpec.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.properties != null && message.hasOwnProperty("properties")) {
                                     if (!Array.isArray(message.properties))
                                         return "properties: array expected";
                                     for (var i = 0; i < message.properties.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property.verify(message.properties[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property.verify(message.properties[i], long + 1);
                                         if (error)
                                             return "properties." + error;
                                     }
@@ -11372,9 +11847,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec} CustomOutputSpec
                              */
-                            CustomOutputSpec.fromObject = function fromObject(object) {
+                            CustomOutputSpec.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec();
                                 if (object.properties) {
                                     if (!Array.isArray(object.properties))
@@ -11383,7 +11862,7 @@
                                     for (var i = 0; i < object.properties.length; ++i) {
                                         if (typeof object.properties[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.properties: object expected");
-                                        message.properties[i] = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property.fromObject(object.properties[i]);
+                                        message.properties[i] = $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property.fromObject(object.properties[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -11459,7 +11938,7 @@
                                 function Property(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -11534,9 +12013,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                Property.decode = function decode(reader, length, error) {
+                                Property.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -11548,11 +12031,11 @@
                                                 break;
                                             }
                                         case 2: {
-                                                message.valueExpression = $root.google.type.Expr.decode(reader, reader.uint32());
+                                                message.valueExpression = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -11583,14 +12066,18 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                Property.verify = function verify(message) {
+                                Property.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.name != null && message.hasOwnProperty("name"))
                                         if (!$util.isString(message.name))
                                             return "name: string expected";
                                     if (message.valueExpression != null && message.hasOwnProperty("valueExpression")) {
-                                        var error = $root.google.type.Expr.verify(message.valueExpression);
+                                        var error = $root.google.type.Expr.verify(message.valueExpression, long + 1);
                                         if (error)
                                             return "valueExpression." + error;
                                     }
@@ -11605,16 +12092,20 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property} Property
                                  */
-                                Property.fromObject = function fromObject(object) {
+                                Property.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property();
                                     if (object.name != null)
                                         message.name = String(object.name);
                                     if (object.valueExpression != null) {
                                         if (typeof object.valueExpression !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.CustomConfig.CustomOutputSpec.Property.valueExpression: object expected");
-                                        message.valueExpression = $root.google.type.Expr.fromObject(object.valueExpression);
+                                        message.valueExpression = $root.google.type.Expr.fromObject(object.valueExpression, long + 1);
                                     }
                                     return message;
                                 };
@@ -11696,7 +12187,7 @@
                                 this.resourceTypes = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -11762,9 +12253,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ResourceSelector.decode = function decode(reader, length, error) {
+                            ResourceSelector.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CustomConfig.ResourceSelector();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -11778,7 +12273,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -11809,9 +12304,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ResourceSelector.verify = function verify(message) {
+                            ResourceSelector.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.resourceTypes != null && message.hasOwnProperty("resourceTypes")) {
                                     if (!Array.isArray(message.resourceTypes))
                                         return "resourceTypes: array expected";
@@ -11830,9 +12329,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.CustomConfig.ResourceSelector} ResourceSelector
                              */
-                            ResourceSelector.fromObject = function fromObject(object) {
+                            ResourceSelector.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.CustomConfig.ResourceSelector)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.CustomConfig.ResourceSelector();
                                 if (object.resourceTypes) {
                                     if (!Array.isArray(object.resourceTypes))
@@ -11947,7 +12450,7 @@
                         function EventThreatDetectionCustomModule(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12092,9 +12595,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EventThreatDetectionCustomModule.decode = function decode(reader, length, error) {
+                        EventThreatDetectionCustomModule.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12106,7 +12613,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.config = $root.google.protobuf.Struct.decode(reader, reader.uint32());
+                                        message.config = $root.google.protobuf.Struct.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -12130,7 +12637,7 @@
                                         break;
                                     }
                                 case 8: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
@@ -12138,7 +12645,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12169,14 +12676,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EventThreatDetectionCustomModule.verify = function verify(message) {
+                        EventThreatDetectionCustomModule.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.config != null && message.hasOwnProperty("config")) {
-                                var error = $root.google.protobuf.Struct.verify(message.config);
+                                var error = $root.google.protobuf.Struct.verify(message.config, long + 1);
                                 if (error)
                                     return "config." + error;
                             }
@@ -12203,7 +12714,7 @@
                                 if (!$util.isString(message.description))
                                     return "description: string expected";
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -12221,16 +12732,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.EventThreatDetectionCustomModule} EventThreatDetectionCustomModule
                          */
-                        EventThreatDetectionCustomModule.fromObject = function fromObject(object) {
+                        EventThreatDetectionCustomModule.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.config != null) {
                                 if (typeof object.config !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.config: object expected");
-                                message.config = $root.google.protobuf.Struct.fromObject(object.config);
+                                message.config = $root.google.protobuf.Struct.fromObject(object.config, long + 1);
                             }
                             if (object.ancestorModule != null)
                                 message.ancestorModule = String(object.ancestorModule);
@@ -12267,7 +12782,7 @@
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.lastEditor != null)
                                 message.lastEditor = String(object.lastEditor);
@@ -12387,7 +12902,7 @@
                             this.errors = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12453,9 +12968,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CustomModuleValidationErrors.decode = function decode(reader, length, error) {
+                        CustomModuleValidationErrors.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CustomModuleValidationErrors();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12465,11 +12984,11 @@
                                 case 1: {
                                         if (!(message.errors && message.errors.length))
                                             message.errors = [];
-                                        message.errors.push($root.google.cloud.securitycenter.v1.CustomModuleValidationError.decode(reader, reader.uint32()));
+                                        message.errors.push($root.google.cloud.securitycenter.v1.CustomModuleValidationError.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12500,14 +13019,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CustomModuleValidationErrors.verify = function verify(message) {
+                        CustomModuleValidationErrors.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.errors != null && message.hasOwnProperty("errors")) {
                                 if (!Array.isArray(message.errors))
                                     return "errors: array expected";
                                 for (var i = 0; i < message.errors.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.CustomModuleValidationError.verify(message.errors[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.CustomModuleValidationError.verify(message.errors[i], long + 1);
                                     if (error)
                                         return "errors." + error;
                                 }
@@ -12523,9 +13046,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CustomModuleValidationErrors} CustomModuleValidationErrors
                          */
-                        CustomModuleValidationErrors.fromObject = function fromObject(object) {
+                        CustomModuleValidationErrors.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CustomModuleValidationErrors)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CustomModuleValidationErrors();
                             if (object.errors) {
                                 if (!Array.isArray(object.errors))
@@ -12534,7 +13061,7 @@
                                 for (var i = 0; i < object.errors.length; ++i) {
                                     if (typeof object.errors[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.CustomModuleValidationErrors.errors: object expected");
-                                    message.errors[i] = $root.google.cloud.securitycenter.v1.CustomModuleValidationError.fromObject(object.errors[i]);
+                                    message.errors[i] = $root.google.cloud.securitycenter.v1.CustomModuleValidationError.fromObject(object.errors[i], long + 1);
                                 }
                             }
                             return message;
@@ -12615,7 +13142,7 @@
                         function CustomModuleValidationError(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12725,9 +13252,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CustomModuleValidationError.decode = function decode(reader, length, error) {
+                        CustomModuleValidationError.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CustomModuleValidationError();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12743,15 +13274,15 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.start = $root.google.cloud.securitycenter.v1.Position.decode(reader, reader.uint32());
+                                        message.start = $root.google.cloud.securitycenter.v1.Position.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
-                                        message.end = $root.google.cloud.securitycenter.v1.Position.decode(reader, reader.uint32());
+                                        message.end = $root.google.cloud.securitycenter.v1.Position.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12782,9 +13313,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CustomModuleValidationError.verify = function verify(message) {
+                        CustomModuleValidationError.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.description != null && message.hasOwnProperty("description"))
                                 if (!$util.isString(message.description))
@@ -12795,7 +13330,7 @@
                             if (message.start != null && message.hasOwnProperty("start")) {
                                 properties._start = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v1.Position.verify(message.start);
+                                    var error = $root.google.cloud.securitycenter.v1.Position.verify(message.start, long + 1);
                                     if (error)
                                         return "start." + error;
                                 }
@@ -12803,7 +13338,7 @@
                             if (message.end != null && message.hasOwnProperty("end")) {
                                 properties._end = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v1.Position.verify(message.end);
+                                    var error = $root.google.cloud.securitycenter.v1.Position.verify(message.end, long + 1);
                                     if (error)
                                         return "end." + error;
                                 }
@@ -12819,9 +13354,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CustomModuleValidationError} CustomModuleValidationError
                          */
-                        CustomModuleValidationError.fromObject = function fromObject(object) {
+                        CustomModuleValidationError.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CustomModuleValidationError)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CustomModuleValidationError();
                             if (object.description != null)
                                 message.description = String(object.description);
@@ -12830,12 +13369,12 @@
                             if (object.start != null) {
                                 if (typeof object.start !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CustomModuleValidationError.start: object expected");
-                                message.start = $root.google.cloud.securitycenter.v1.Position.fromObject(object.start);
+                                message.start = $root.google.cloud.securitycenter.v1.Position.fromObject(object.start, long + 1);
                             }
                             if (object.end != null) {
                                 if (typeof object.end !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CustomModuleValidationError.end: object expected");
-                                message.end = $root.google.cloud.securitycenter.v1.Position.fromObject(object.end);
+                                message.end = $root.google.cloud.securitycenter.v1.Position.fromObject(object.end, long + 1);
                             }
                             return message;
                         };
@@ -12924,7 +13463,7 @@
                         function Position(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12999,9 +13538,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Position.decode = function decode(reader, length, error) {
+                        Position.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Position();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -13017,7 +13560,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -13048,9 +13591,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Position.verify = function verify(message) {
+                        Position.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.lineNumber != null && message.hasOwnProperty("lineNumber"))
                                 if (!$util.isInteger(message.lineNumber))
                                     return "lineNumber: integer expected";
@@ -13068,9 +13615,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Position} Position
                          */
-                        Position.fromObject = function fromObject(object) {
+                        Position.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Position)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Position();
                             if (object.lineNumber != null)
                                 message.lineNumber = object.lineNumber | 0;
@@ -13156,7 +13707,7 @@
                             this.targets = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -13243,9 +13794,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Exfiltration.decode = function decode(reader, length, error) {
+                        Exfiltration.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Exfiltration();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -13255,13 +13810,13 @@
                                 case 1: {
                                         if (!(message.sources && message.sources.length))
                                             message.sources = [];
-                                        message.sources.push($root.google.cloud.securitycenter.v1.ExfilResource.decode(reader, reader.uint32()));
+                                        message.sources.push($root.google.cloud.securitycenter.v1.ExfilResource.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
                                         if (!(message.targets && message.targets.length))
                                             message.targets = [];
-                                        message.targets.push($root.google.cloud.securitycenter.v1.ExfilResource.decode(reader, reader.uint32()));
+                                        message.targets.push($root.google.cloud.securitycenter.v1.ExfilResource.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
@@ -13269,7 +13824,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -13300,14 +13855,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Exfiltration.verify = function verify(message) {
+                        Exfiltration.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.sources != null && message.hasOwnProperty("sources")) {
                                 if (!Array.isArray(message.sources))
                                     return "sources: array expected";
                                 for (var i = 0; i < message.sources.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ExfilResource.verify(message.sources[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ExfilResource.verify(message.sources[i], long + 1);
                                     if (error)
                                         return "sources." + error;
                                 }
@@ -13316,7 +13875,7 @@
                                 if (!Array.isArray(message.targets))
                                     return "targets: array expected";
                                 for (var i = 0; i < message.targets.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ExfilResource.verify(message.targets[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ExfilResource.verify(message.targets[i], long + 1);
                                     if (error)
                                         return "targets." + error;
                                 }
@@ -13335,9 +13894,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Exfiltration} Exfiltration
                          */
-                        Exfiltration.fromObject = function fromObject(object) {
+                        Exfiltration.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Exfiltration)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Exfiltration();
                             if (object.sources) {
                                 if (!Array.isArray(object.sources))
@@ -13346,7 +13909,7 @@
                                 for (var i = 0; i < object.sources.length; ++i) {
                                     if (typeof object.sources[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Exfiltration.sources: object expected");
-                                    message.sources[i] = $root.google.cloud.securitycenter.v1.ExfilResource.fromObject(object.sources[i]);
+                                    message.sources[i] = $root.google.cloud.securitycenter.v1.ExfilResource.fromObject(object.sources[i], long + 1);
                                 }
                             }
                             if (object.targets) {
@@ -13356,7 +13919,7 @@
                                 for (var i = 0; i < object.targets.length; ++i) {
                                     if (typeof object.targets[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Exfiltration.targets: object expected");
-                                    message.targets[i] = $root.google.cloud.securitycenter.v1.ExfilResource.fromObject(object.targets[i]);
+                                    message.targets[i] = $root.google.cloud.securitycenter.v1.ExfilResource.fromObject(object.targets[i], long + 1);
                                 }
                             }
                             if (object.totalExfiltratedBytes != null)
@@ -13463,7 +14026,7 @@
                             this.components = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -13539,9 +14102,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ExfilResource.decode = function decode(reader, length, error) {
+                        ExfilResource.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ExfilResource();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -13559,7 +14126,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -13590,9 +14157,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ExfilResource.verify = function verify(message) {
+                        ExfilResource.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -13614,9 +14185,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ExfilResource} ExfilResource
                          */
-                        ExfilResource.fromObject = function fromObject(object) {
+                        ExfilResource.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ExfilResource)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ExfilResource();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -13717,7 +14292,7 @@
                         function ExternalExposure(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -13892,9 +14467,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ExternalExposure.decode = function decode(reader, length, error) {
+                        ExternalExposure.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ExternalExposure();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -13950,7 +14529,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -13981,9 +14560,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ExternalExposure.verify = function verify(message) {
+                        ExternalExposure.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.privateIpAddress != null && message.hasOwnProperty("privateIpAddress"))
                                 if (!$util.isString(message.privateIpAddress))
                                     return "privateIpAddress: string expected";
@@ -14031,9 +14614,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ExternalExposure} ExternalExposure
                          */
-                        ExternalExposure.fromObject = function fromObject(object) {
+                        ExternalExposure.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ExternalExposure)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ExternalExposure();
                             if (object.privateIpAddress != null)
                                 message.privateIpAddress = String(object.privateIpAddress);
@@ -14176,7 +14763,7 @@
                             this.assignees = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -14342,9 +14929,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ExternalSystem.decode = function decode(reader, length, error) {
+                        ExternalSystem.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ExternalSystem();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -14370,7 +14961,7 @@
                                         break;
                                     }
                                 case 5: {
-                                        message.externalSystemUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.externalSystemUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
@@ -14382,23 +14973,23 @@
                                         break;
                                     }
                                 case 9: {
-                                        message.caseSla = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.caseSla = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.caseCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.caseCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 11: {
-                                        message.caseCloseTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.caseCloseTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
-                                        message.ticketInfo = $root.google.cloud.securitycenter.v1.ExternalSystem.TicketInfo.decode(reader, reader.uint32());
+                                        message.ticketInfo = $root.google.cloud.securitycenter.v1.ExternalSystem.TicketInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -14429,9 +15020,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ExternalSystem.verify = function verify(message) {
+                        ExternalSystem.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -14449,7 +15044,7 @@
                                 if (!$util.isString(message.status))
                                     return "status: string expected";
                             if (message.externalSystemUpdateTime != null && message.hasOwnProperty("externalSystemUpdateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.externalSystemUpdateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.externalSystemUpdateTime, long + 1);
                                 if (error)
                                     return "externalSystemUpdateTime." + error;
                             }
@@ -14460,22 +15055,22 @@
                                 if (!$util.isString(message.casePriority))
                                     return "casePriority: string expected";
                             if (message.caseSla != null && message.hasOwnProperty("caseSla")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.caseSla);
+                                var error = $root.google.protobuf.Timestamp.verify(message.caseSla, long + 1);
                                 if (error)
                                     return "caseSla." + error;
                             }
                             if (message.caseCreateTime != null && message.hasOwnProperty("caseCreateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.caseCreateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.caseCreateTime, long + 1);
                                 if (error)
                                     return "caseCreateTime." + error;
                             }
                             if (message.caseCloseTime != null && message.hasOwnProperty("caseCloseTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.caseCloseTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.caseCloseTime, long + 1);
                                 if (error)
                                     return "caseCloseTime." + error;
                             }
                             if (message.ticketInfo != null && message.hasOwnProperty("ticketInfo")) {
-                                var error = $root.google.cloud.securitycenter.v1.ExternalSystem.TicketInfo.verify(message.ticketInfo);
+                                var error = $root.google.cloud.securitycenter.v1.ExternalSystem.TicketInfo.verify(message.ticketInfo, long + 1);
                                 if (error)
                                     return "ticketInfo." + error;
                             }
@@ -14490,9 +15085,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ExternalSystem} ExternalSystem
                          */
-                        ExternalSystem.fromObject = function fromObject(object) {
+                        ExternalSystem.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ExternalSystem)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ExternalSystem();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -14510,7 +15109,7 @@
                             if (object.externalSystemUpdateTime != null) {
                                 if (typeof object.externalSystemUpdateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ExternalSystem.externalSystemUpdateTime: object expected");
-                                message.externalSystemUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.externalSystemUpdateTime);
+                                message.externalSystemUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.externalSystemUpdateTime, long + 1);
                             }
                             if (object.caseUri != null)
                                 message.caseUri = String(object.caseUri);
@@ -14519,22 +15118,22 @@
                             if (object.caseSla != null) {
                                 if (typeof object.caseSla !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ExternalSystem.caseSla: object expected");
-                                message.caseSla = $root.google.protobuf.Timestamp.fromObject(object.caseSla);
+                                message.caseSla = $root.google.protobuf.Timestamp.fromObject(object.caseSla, long + 1);
                             }
                             if (object.caseCreateTime != null) {
                                 if (typeof object.caseCreateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ExternalSystem.caseCreateTime: object expected");
-                                message.caseCreateTime = $root.google.protobuf.Timestamp.fromObject(object.caseCreateTime);
+                                message.caseCreateTime = $root.google.protobuf.Timestamp.fromObject(object.caseCreateTime, long + 1);
                             }
                             if (object.caseCloseTime != null) {
                                 if (typeof object.caseCloseTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ExternalSystem.caseCloseTime: object expected");
-                                message.caseCloseTime = $root.google.protobuf.Timestamp.fromObject(object.caseCloseTime);
+                                message.caseCloseTime = $root.google.protobuf.Timestamp.fromObject(object.caseCloseTime, long + 1);
                             }
                             if (object.ticketInfo != null) {
                                 if (typeof object.ticketInfo !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ExternalSystem.ticketInfo: object expected");
-                                message.ticketInfo = $root.google.cloud.securitycenter.v1.ExternalSystem.TicketInfo.fromObject(object.ticketInfo);
+                                message.ticketInfo = $root.google.cloud.securitycenter.v1.ExternalSystem.TicketInfo.fromObject(object.ticketInfo, long + 1);
                             }
                             return message;
                         };
@@ -14645,7 +15244,7 @@
                             function TicketInfo(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -14760,9 +15359,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            TicketInfo.decode = function decode(reader, length, error) {
+                            TicketInfo.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ExternalSystem.TicketInfo();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -14790,11 +15393,11 @@
                                             break;
                                         }
                                     case 6: {
-                                            message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                            message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -14825,9 +15428,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            TicketInfo.verify = function verify(message) {
+                            TicketInfo.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -14844,7 +15451,7 @@
                                     if (!$util.isString(message.status))
                                         return "status: string expected";
                                 if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                    var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                    var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                     if (error)
                                         return "updateTime." + error;
                                 }
@@ -14859,9 +15466,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.ExternalSystem.TicketInfo} TicketInfo
                              */
-                            TicketInfo.fromObject = function fromObject(object) {
+                            TicketInfo.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.ExternalSystem.TicketInfo)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.ExternalSystem.TicketInfo();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -14876,7 +15487,7 @@
                                 if (object.updateTime != null) {
                                     if (typeof object.updateTime !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ExternalSystem.TicketInfo.updateTime: object expected");
-                                    message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                    message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                                 }
                                 return message;
                             };
@@ -14975,7 +15586,7 @@
                         function File(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -15100,9 +15711,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        File.decode = function decode(reader, length, error) {
+                        File.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.File();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -15134,11 +15749,11 @@
                                         break;
                                     }
                                 case 7: {
-                                        message.diskPath = $root.google.cloud.securitycenter.v1.File.DiskPath.decode(reader, reader.uint32());
+                                        message.diskPath = $root.google.cloud.securitycenter.v1.File.DiskPath.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -15169,9 +15784,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        File.verify = function verify(message) {
+                        File.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.path != null && message.hasOwnProperty("path"))
                                 if (!$util.isString(message.path))
                                     return "path: string expected";
@@ -15191,7 +15810,7 @@
                                 if (!$util.isString(message.contents))
                                     return "contents: string expected";
                             if (message.diskPath != null && message.hasOwnProperty("diskPath")) {
-                                var error = $root.google.cloud.securitycenter.v1.File.DiskPath.verify(message.diskPath);
+                                var error = $root.google.cloud.securitycenter.v1.File.DiskPath.verify(message.diskPath, long + 1);
                                 if (error)
                                     return "diskPath." + error;
                             }
@@ -15206,9 +15825,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.File} File
                          */
-                        File.fromObject = function fromObject(object) {
+                        File.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.File)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.File();
                             if (object.path != null)
                                 message.path = String(object.path);
@@ -15239,7 +15862,7 @@
                             if (object.diskPath != null) {
                                 if (typeof object.diskPath !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.File.diskPath: object expected");
-                                message.diskPath = $root.google.cloud.securitycenter.v1.File.DiskPath.fromObject(object.diskPath);
+                                message.diskPath = $root.google.cloud.securitycenter.v1.File.DiskPath.fromObject(object.diskPath, long + 1);
                             }
                             return message;
                         };
@@ -15344,7 +15967,7 @@
                             function DiskPath(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -15419,9 +16042,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            DiskPath.decode = function decode(reader, length, error) {
+                            DiskPath.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.File.DiskPath();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -15437,7 +16064,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -15468,9 +16095,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            DiskPath.verify = function verify(message) {
+                            DiskPath.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.partitionUuid != null && message.hasOwnProperty("partitionUuid"))
                                     if (!$util.isString(message.partitionUuid))
                                         return "partitionUuid: string expected";
@@ -15488,9 +16119,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.File.DiskPath} DiskPath
                              */
-                            DiskPath.fromObject = function fromObject(object) {
+                            DiskPath.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.File.DiskPath)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.File.DiskPath();
                                 if (object.partitionUuid != null)
                                     message.partitionUuid = String(object.partitionUuid);
@@ -15639,7 +16274,7 @@
                             this.groupMemberships = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -16233,9 +16868,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Finding.decode = function decode(reader, length, error) {
+                        Finding.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Finding(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -16279,26 +16918,28 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.sourceProperties, key);
                                         message.sourceProperties[key] = value;
                                         break;
                                     }
                                 case 8: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
-                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 12: {
@@ -16318,15 +16959,15 @@
                                         break;
                                     }
                                 case 18: {
-                                        message.indicator = $root.google.cloud.securitycenter.v1.Indicator.decode(reader, reader.uint32());
+                                        message.indicator = $root.google.cloud.securitycenter.v1.Indicator.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 20: {
-                                        message.vulnerability = $root.google.cloud.securitycenter.v1.Vulnerability.decode(reader, reader.uint32());
+                                        message.vulnerability = $root.google.cloud.securitycenter.v1.Vulnerability.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 21: {
-                                        message.muteUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.muteUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 22: {
@@ -16342,28 +16983,30 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.cloud.securitycenter.v1.ExternalSystem.decode(reader, reader.uint32());
+                                                value = $root.google.cloud.securitycenter.v1.ExternalSystem.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.externalSystems, key);
                                         message.externalSystems[key] = value;
                                         break;
                                     }
                                 case 25: {
-                                        message.mitreAttack = $root.google.cloud.securitycenter.v1.MitreAttack.decode(reader, reader.uint32());
+                                        message.mitreAttack = $root.google.cloud.securitycenter.v1.MitreAttack.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 26: {
-                                        message.access = $root.google.cloud.securitycenter.v1.Access.decode(reader, reader.uint32());
+                                        message.access = $root.google.cloud.securitycenter.v1.Access.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 31: {
                                         if (!(message.connections && message.connections.length))
                                             message.connections = [];
-                                        message.connections.push($root.google.cloud.securitycenter.v1.Connection.decode(reader, reader.uint32()));
+                                        message.connections.push($root.google.cloud.securitycenter.v1.Connection.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 28: {
@@ -16371,13 +17014,13 @@
                                         break;
                                     }
                                 case 61: {
-                                        message.muteInfo = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.decode(reader, reader.uint32());
+                                        message.muteInfo = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 30: {
                                         if (!(message.processes && message.processes.length))
                                             message.processes = [];
-                                        message.processes.push($root.google.cloud.securitycenter.v1.Process.decode(reader, reader.uint32()));
+                                        message.processes.push($root.google.cloud.securitycenter.v1.Process.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 33: {
@@ -16393,20 +17036,22 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.cloud.securitycenter.v1.ContactDetails.decode(reader, reader.uint32());
+                                                value = $root.google.cloud.securitycenter.v1.ContactDetails.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.contacts, key);
                                         message.contacts[key] = value;
                                         break;
                                     }
                                 case 34: {
                                         if (!(message.compliances && message.compliances.length))
                                             message.compliances = [];
-                                        message.compliances.push($root.google.cloud.securitycenter.v1.Compliance.decode(reader, reader.uint32()));
+                                        message.compliances.push($root.google.cloud.securitycenter.v1.Compliance.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 36: {
@@ -16418,13 +17063,13 @@
                                         break;
                                     }
                                 case 38: {
-                                        message.exfiltration = $root.google.cloud.securitycenter.v1.Exfiltration.decode(reader, reader.uint32());
+                                        message.exfiltration = $root.google.cloud.securitycenter.v1.Exfiltration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 39: {
                                         if (!(message.iamBindings && message.iamBindings.length))
                                             message.iamBindings = [];
-                                        message.iamBindings.push($root.google.cloud.securitycenter.v1.IamBinding.decode(reader, reader.uint32()));
+                                        message.iamBindings.push($root.google.cloud.securitycenter.v1.IamBinding.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 40: {
@@ -16438,97 +17083,97 @@
                                 case 42: {
                                         if (!(message.containers && message.containers.length))
                                             message.containers = [];
-                                        message.containers.push($root.google.cloud.securitycenter.v1.Container.decode(reader, reader.uint32()));
+                                        message.containers.push($root.google.cloud.securitycenter.v1.Container.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 43: {
-                                        message.kubernetes = $root.google.cloud.securitycenter.v1.Kubernetes.decode(reader, reader.uint32());
+                                        message.kubernetes = $root.google.cloud.securitycenter.v1.Kubernetes.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 44: {
-                                        message.database = $root.google.cloud.securitycenter.v1.Database.decode(reader, reader.uint32());
+                                        message.database = $root.google.cloud.securitycenter.v1.Database.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 45: {
-                                        message.attackExposure = $root.google.cloud.securitycenter.v1.AttackExposure.decode(reader, reader.uint32());
+                                        message.attackExposure = $root.google.cloud.securitycenter.v1.AttackExposure.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 46: {
                                         if (!(message.files && message.files.length))
                                             message.files = [];
-                                        message.files.push($root.google.cloud.securitycenter.v1.File.decode(reader, reader.uint32()));
+                                        message.files.push($root.google.cloud.securitycenter.v1.File.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 48: {
-                                        message.cloudDlpInspection = $root.google.cloud.securitycenter.v1.CloudDlpInspection.decode(reader, reader.uint32());
+                                        message.cloudDlpInspection = $root.google.cloud.securitycenter.v1.CloudDlpInspection.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 49: {
-                                        message.cloudDlpDataProfile = $root.google.cloud.securitycenter.v1.CloudDlpDataProfile.decode(reader, reader.uint32());
+                                        message.cloudDlpDataProfile = $root.google.cloud.securitycenter.v1.CloudDlpDataProfile.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 50: {
-                                        message.kernelRootkit = $root.google.cloud.securitycenter.v1.KernelRootkit.decode(reader, reader.uint32());
+                                        message.kernelRootkit = $root.google.cloud.securitycenter.v1.KernelRootkit.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 51: {
                                         if (!(message.orgPolicies && message.orgPolicies.length))
                                             message.orgPolicies = [];
-                                        message.orgPolicies.push($root.google.cloud.securitycenter.v1.OrgPolicy.decode(reader, reader.uint32()));
+                                        message.orgPolicies.push($root.google.cloud.securitycenter.v1.OrgPolicy.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 53: {
-                                        message.application = $root.google.cloud.securitycenter.v1.Application.decode(reader, reader.uint32());
+                                        message.application = $root.google.cloud.securitycenter.v1.Application.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 55: {
-                                        message.backupDisasterRecovery = $root.google.cloud.securitycenter.v1.BackupDisasterRecovery.decode(reader, reader.uint32());
+                                        message.backupDisasterRecovery = $root.google.cloud.securitycenter.v1.BackupDisasterRecovery.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 56: {
-                                        message.securityPosture = $root.google.cloud.securitycenter.v1.SecurityPosture.decode(reader, reader.uint32());
+                                        message.securityPosture = $root.google.cloud.securitycenter.v1.SecurityPosture.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 57: {
                                         if (!(message.logEntries && message.logEntries.length))
                                             message.logEntries = [];
-                                        message.logEntries.push($root.google.cloud.securitycenter.v1.LogEntry.decode(reader, reader.uint32()));
+                                        message.logEntries.push($root.google.cloud.securitycenter.v1.LogEntry.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 58: {
                                         if (!(message.loadBalancers && message.loadBalancers.length))
                                             message.loadBalancers = [];
-                                        message.loadBalancers.push($root.google.cloud.securitycenter.v1.LoadBalancer.decode(reader, reader.uint32()));
+                                        message.loadBalancers.push($root.google.cloud.securitycenter.v1.LoadBalancer.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 59: {
-                                        message.cloudArmor = $root.google.cloud.securitycenter.v1.CloudArmor.decode(reader, reader.uint32());
+                                        message.cloudArmor = $root.google.cloud.securitycenter.v1.CloudArmor.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 63: {
-                                        message.notebook = $root.google.cloud.securitycenter.v1.Notebook.decode(reader, reader.uint32());
+                                        message.notebook = $root.google.cloud.securitycenter.v1.Notebook.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 64: {
-                                        message.toxicCombination = $root.google.cloud.securitycenter.v1.ToxicCombination.decode(reader, reader.uint32());
+                                        message.toxicCombination = $root.google.cloud.securitycenter.v1.ToxicCombination.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 65: {
                                         if (!(message.groupMemberships && message.groupMemberships.length))
                                             message.groupMemberships = [];
-                                        message.groupMemberships.push($root.google.cloud.securitycenter.v1.GroupMembership.decode(reader, reader.uint32()));
+                                        message.groupMemberships.push($root.google.cloud.securitycenter.v1.GroupMembership.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 77: {
-                                        message.chokepoint = $root.google.cloud.securitycenter.v1.Chokepoint.decode(reader, reader.uint32());
+                                        message.chokepoint = $root.google.cloud.securitycenter.v1.Chokepoint.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 84: {
-                                        message.externalExposure = $root.google.cloud.securitycenter.v1.ExternalExposure.decode(reader, reader.uint32());
+                                        message.externalExposure = $root.google.cloud.securitycenter.v1.ExternalExposure.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -16559,9 +17204,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Finding.verify = function verify(message) {
+                        Finding.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -16591,23 +17240,23 @@
                                     return "sourceProperties: object expected";
                                 var key = Object.keys(message.sourceProperties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]], long + 1);
                                     if (error)
                                         return "sourceProperties." + error;
                                 }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v1.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v1.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.eventTime != null && message.hasOwnProperty("eventTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime, long + 1);
                                 if (error)
                                     return "eventTime." + error;
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
@@ -16653,17 +17302,17 @@
                                     break;
                                 }
                             if (message.indicator != null && message.hasOwnProperty("indicator")) {
-                                var error = $root.google.cloud.securitycenter.v1.Indicator.verify(message.indicator);
+                                var error = $root.google.cloud.securitycenter.v1.Indicator.verify(message.indicator, long + 1);
                                 if (error)
                                     return "indicator." + error;
                             }
                             if (message.vulnerability != null && message.hasOwnProperty("vulnerability")) {
-                                var error = $root.google.cloud.securitycenter.v1.Vulnerability.verify(message.vulnerability);
+                                var error = $root.google.cloud.securitycenter.v1.Vulnerability.verify(message.vulnerability, long + 1);
                                 if (error)
                                     return "vulnerability." + error;
                             }
                             if (message.muteUpdateTime != null && message.hasOwnProperty("muteUpdateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.muteUpdateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.muteUpdateTime, long + 1);
                                 if (error)
                                     return "muteUpdateTime." + error;
                             }
@@ -16672,18 +17321,18 @@
                                     return "externalSystems: object expected";
                                 var key = Object.keys(message.externalSystems);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ExternalSystem.verify(message.externalSystems[key[i]]);
+                                    var error = $root.google.cloud.securitycenter.v1.ExternalSystem.verify(message.externalSystems[key[i]], long + 1);
                                     if (error)
                                         return "externalSystems." + error;
                                 }
                             }
                             if (message.mitreAttack != null && message.hasOwnProperty("mitreAttack")) {
-                                var error = $root.google.cloud.securitycenter.v1.MitreAttack.verify(message.mitreAttack);
+                                var error = $root.google.cloud.securitycenter.v1.MitreAttack.verify(message.mitreAttack, long + 1);
                                 if (error)
                                     return "mitreAttack." + error;
                             }
                             if (message.access != null && message.hasOwnProperty("access")) {
-                                var error = $root.google.cloud.securitycenter.v1.Access.verify(message.access);
+                                var error = $root.google.cloud.securitycenter.v1.Access.verify(message.access, long + 1);
                                 if (error)
                                     return "access." + error;
                             }
@@ -16691,7 +17340,7 @@
                                 if (!Array.isArray(message.connections))
                                     return "connections: array expected";
                                 for (var i = 0; i < message.connections.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Connection.verify(message.connections[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Connection.verify(message.connections[i], long + 1);
                                     if (error)
                                         return "connections." + error;
                                 }
@@ -16700,7 +17349,7 @@
                                 if (!$util.isString(message.muteInitiator))
                                     return "muteInitiator: string expected";
                             if (message.muteInfo != null && message.hasOwnProperty("muteInfo")) {
-                                var error = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.verify(message.muteInfo);
+                                var error = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.verify(message.muteInfo, long + 1);
                                 if (error)
                                     return "muteInfo." + error;
                             }
@@ -16708,7 +17357,7 @@
                                 if (!Array.isArray(message.processes))
                                     return "processes: array expected";
                                 for (var i = 0; i < message.processes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Process.verify(message.processes[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Process.verify(message.processes[i], long + 1);
                                     if (error)
                                         return "processes." + error;
                                 }
@@ -16718,7 +17367,7 @@
                                     return "contacts: object expected";
                                 var key = Object.keys(message.contacts);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ContactDetails.verify(message.contacts[key[i]]);
+                                    var error = $root.google.cloud.securitycenter.v1.ContactDetails.verify(message.contacts[key[i]], long + 1);
                                     if (error)
                                         return "contacts." + error;
                                 }
@@ -16727,7 +17376,7 @@
                                 if (!Array.isArray(message.compliances))
                                     return "compliances: array expected";
                                 for (var i = 0; i < message.compliances.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Compliance.verify(message.compliances[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Compliance.verify(message.compliances[i], long + 1);
                                     if (error)
                                         return "compliances." + error;
                                 }
@@ -16739,7 +17388,7 @@
                                 if (!$util.isString(message.description))
                                     return "description: string expected";
                             if (message.exfiltration != null && message.hasOwnProperty("exfiltration")) {
-                                var error = $root.google.cloud.securitycenter.v1.Exfiltration.verify(message.exfiltration);
+                                var error = $root.google.cloud.securitycenter.v1.Exfiltration.verify(message.exfiltration, long + 1);
                                 if (error)
                                     return "exfiltration." + error;
                             }
@@ -16747,7 +17396,7 @@
                                 if (!Array.isArray(message.iamBindings))
                                     return "iamBindings: array expected";
                                 for (var i = 0; i < message.iamBindings.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.IamBinding.verify(message.iamBindings[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.IamBinding.verify(message.iamBindings[i], long + 1);
                                     if (error)
                                         return "iamBindings." + error;
                                 }
@@ -16762,23 +17411,23 @@
                                 if (!Array.isArray(message.containers))
                                     return "containers: array expected";
                                 for (var i = 0; i < message.containers.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Container.verify(message.containers[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Container.verify(message.containers[i], long + 1);
                                     if (error)
                                         return "containers." + error;
                                 }
                             }
                             if (message.kubernetes != null && message.hasOwnProperty("kubernetes")) {
-                                var error = $root.google.cloud.securitycenter.v1.Kubernetes.verify(message.kubernetes);
+                                var error = $root.google.cloud.securitycenter.v1.Kubernetes.verify(message.kubernetes, long + 1);
                                 if (error)
                                     return "kubernetes." + error;
                             }
                             if (message.database != null && message.hasOwnProperty("database")) {
-                                var error = $root.google.cloud.securitycenter.v1.Database.verify(message.database);
+                                var error = $root.google.cloud.securitycenter.v1.Database.verify(message.database, long + 1);
                                 if (error)
                                     return "database." + error;
                             }
                             if (message.attackExposure != null && message.hasOwnProperty("attackExposure")) {
-                                var error = $root.google.cloud.securitycenter.v1.AttackExposure.verify(message.attackExposure);
+                                var error = $root.google.cloud.securitycenter.v1.AttackExposure.verify(message.attackExposure, long + 1);
                                 if (error)
                                     return "attackExposure." + error;
                             }
@@ -16786,23 +17435,23 @@
                                 if (!Array.isArray(message.files))
                                     return "files: array expected";
                                 for (var i = 0; i < message.files.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.File.verify(message.files[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.File.verify(message.files[i], long + 1);
                                     if (error)
                                         return "files." + error;
                                 }
                             }
                             if (message.cloudDlpInspection != null && message.hasOwnProperty("cloudDlpInspection")) {
-                                var error = $root.google.cloud.securitycenter.v1.CloudDlpInspection.verify(message.cloudDlpInspection);
+                                var error = $root.google.cloud.securitycenter.v1.CloudDlpInspection.verify(message.cloudDlpInspection, long + 1);
                                 if (error)
                                     return "cloudDlpInspection." + error;
                             }
                             if (message.cloudDlpDataProfile != null && message.hasOwnProperty("cloudDlpDataProfile")) {
-                                var error = $root.google.cloud.securitycenter.v1.CloudDlpDataProfile.verify(message.cloudDlpDataProfile);
+                                var error = $root.google.cloud.securitycenter.v1.CloudDlpDataProfile.verify(message.cloudDlpDataProfile, long + 1);
                                 if (error)
                                     return "cloudDlpDataProfile." + error;
                             }
                             if (message.kernelRootkit != null && message.hasOwnProperty("kernelRootkit")) {
-                                var error = $root.google.cloud.securitycenter.v1.KernelRootkit.verify(message.kernelRootkit);
+                                var error = $root.google.cloud.securitycenter.v1.KernelRootkit.verify(message.kernelRootkit, long + 1);
                                 if (error)
                                     return "kernelRootkit." + error;
                             }
@@ -16810,23 +17459,23 @@
                                 if (!Array.isArray(message.orgPolicies))
                                     return "orgPolicies: array expected";
                                 for (var i = 0; i < message.orgPolicies.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.OrgPolicy.verify(message.orgPolicies[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.OrgPolicy.verify(message.orgPolicies[i], long + 1);
                                     if (error)
                                         return "orgPolicies." + error;
                                 }
                             }
                             if (message.application != null && message.hasOwnProperty("application")) {
-                                var error = $root.google.cloud.securitycenter.v1.Application.verify(message.application);
+                                var error = $root.google.cloud.securitycenter.v1.Application.verify(message.application, long + 1);
                                 if (error)
                                     return "application." + error;
                             }
                             if (message.backupDisasterRecovery != null && message.hasOwnProperty("backupDisasterRecovery")) {
-                                var error = $root.google.cloud.securitycenter.v1.BackupDisasterRecovery.verify(message.backupDisasterRecovery);
+                                var error = $root.google.cloud.securitycenter.v1.BackupDisasterRecovery.verify(message.backupDisasterRecovery, long + 1);
                                 if (error)
                                     return "backupDisasterRecovery." + error;
                             }
                             if (message.securityPosture != null && message.hasOwnProperty("securityPosture")) {
-                                var error = $root.google.cloud.securitycenter.v1.SecurityPosture.verify(message.securityPosture);
+                                var error = $root.google.cloud.securitycenter.v1.SecurityPosture.verify(message.securityPosture, long + 1);
                                 if (error)
                                     return "securityPosture." + error;
                             }
@@ -16834,7 +17483,7 @@
                                 if (!Array.isArray(message.logEntries))
                                     return "logEntries: array expected";
                                 for (var i = 0; i < message.logEntries.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.LogEntry.verify(message.logEntries[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.LogEntry.verify(message.logEntries[i], long + 1);
                                     if (error)
                                         return "logEntries." + error;
                                 }
@@ -16843,23 +17492,23 @@
                                 if (!Array.isArray(message.loadBalancers))
                                     return "loadBalancers: array expected";
                                 for (var i = 0; i < message.loadBalancers.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.LoadBalancer.verify(message.loadBalancers[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.LoadBalancer.verify(message.loadBalancers[i], long + 1);
                                     if (error)
                                         return "loadBalancers." + error;
                                 }
                             }
                             if (message.cloudArmor != null && message.hasOwnProperty("cloudArmor")) {
-                                var error = $root.google.cloud.securitycenter.v1.CloudArmor.verify(message.cloudArmor);
+                                var error = $root.google.cloud.securitycenter.v1.CloudArmor.verify(message.cloudArmor, long + 1);
                                 if (error)
                                     return "cloudArmor." + error;
                             }
                             if (message.notebook != null && message.hasOwnProperty("notebook")) {
-                                var error = $root.google.cloud.securitycenter.v1.Notebook.verify(message.notebook);
+                                var error = $root.google.cloud.securitycenter.v1.Notebook.verify(message.notebook, long + 1);
                                 if (error)
                                     return "notebook." + error;
                             }
                             if (message.toxicCombination != null && message.hasOwnProperty("toxicCombination")) {
-                                var error = $root.google.cloud.securitycenter.v1.ToxicCombination.verify(message.toxicCombination);
+                                var error = $root.google.cloud.securitycenter.v1.ToxicCombination.verify(message.toxicCombination, long + 1);
                                 if (error)
                                     return "toxicCombination." + error;
                             }
@@ -16867,18 +17516,18 @@
                                 if (!Array.isArray(message.groupMemberships))
                                     return "groupMemberships: array expected";
                                 for (var i = 0; i < message.groupMemberships.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.GroupMembership.verify(message.groupMemberships[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.GroupMembership.verify(message.groupMemberships[i], long + 1);
                                     if (error)
                                         return "groupMemberships." + error;
                                 }
                             }
                             if (message.chokepoint != null && message.hasOwnProperty("chokepoint")) {
-                                var error = $root.google.cloud.securitycenter.v1.Chokepoint.verify(message.chokepoint);
+                                var error = $root.google.cloud.securitycenter.v1.Chokepoint.verify(message.chokepoint, long + 1);
                                 if (error)
                                     return "chokepoint." + error;
                             }
                             if (message.externalExposure != null && message.hasOwnProperty("externalExposure")) {
-                                var error = $root.google.cloud.securitycenter.v1.ExternalExposure.verify(message.externalExposure);
+                                var error = $root.google.cloud.securitycenter.v1.ExternalExposure.verify(message.externalExposure, long + 1);
                                 if (error)
                                     return "externalExposure." + error;
                             }
@@ -16893,9 +17542,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Finding} Finding
                          */
-                        Finding.fromObject = function fromObject(object) {
+                        Finding.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Finding)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Finding();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -16932,25 +17585,27 @@
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.sourceProperties: object expected");
                                 message.sourceProperties = {};
                                 for (var keys = Object.keys(object.sourceProperties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.sourceProperties, keys[i]);
                                     if (typeof object.sourceProperties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.sourceProperties: object expected");
-                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]]);
+                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]], long + 1);
                                 }
                             }
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.eventTime != null) {
                                 if (typeof object.eventTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.eventTime: object expected");
-                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime);
+                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime, long + 1);
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             switch (object.severity) {
                             default:
@@ -17061,37 +17716,39 @@
                             if (object.indicator != null) {
                                 if (typeof object.indicator !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.indicator: object expected");
-                                message.indicator = $root.google.cloud.securitycenter.v1.Indicator.fromObject(object.indicator);
+                                message.indicator = $root.google.cloud.securitycenter.v1.Indicator.fromObject(object.indicator, long + 1);
                             }
                             if (object.vulnerability != null) {
                                 if (typeof object.vulnerability !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.vulnerability: object expected");
-                                message.vulnerability = $root.google.cloud.securitycenter.v1.Vulnerability.fromObject(object.vulnerability);
+                                message.vulnerability = $root.google.cloud.securitycenter.v1.Vulnerability.fromObject(object.vulnerability, long + 1);
                             }
                             if (object.muteUpdateTime != null) {
                                 if (typeof object.muteUpdateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.muteUpdateTime: object expected");
-                                message.muteUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.muteUpdateTime);
+                                message.muteUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.muteUpdateTime, long + 1);
                             }
                             if (object.externalSystems) {
                                 if (typeof object.externalSystems !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.externalSystems: object expected");
                                 message.externalSystems = {};
                                 for (var keys = Object.keys(object.externalSystems), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.externalSystems, keys[i]);
                                     if (typeof object.externalSystems[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.externalSystems: object expected");
-                                    message.externalSystems[keys[i]] = $root.google.cloud.securitycenter.v1.ExternalSystem.fromObject(object.externalSystems[keys[i]]);
+                                    message.externalSystems[keys[i]] = $root.google.cloud.securitycenter.v1.ExternalSystem.fromObject(object.externalSystems[keys[i]], long + 1);
                                 }
                             }
                             if (object.mitreAttack != null) {
                                 if (typeof object.mitreAttack !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.mitreAttack: object expected");
-                                message.mitreAttack = $root.google.cloud.securitycenter.v1.MitreAttack.fromObject(object.mitreAttack);
+                                message.mitreAttack = $root.google.cloud.securitycenter.v1.MitreAttack.fromObject(object.mitreAttack, long + 1);
                             }
                             if (object.access != null) {
                                 if (typeof object.access !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.access: object expected");
-                                message.access = $root.google.cloud.securitycenter.v1.Access.fromObject(object.access);
+                                message.access = $root.google.cloud.securitycenter.v1.Access.fromObject(object.access, long + 1);
                             }
                             if (object.connections) {
                                 if (!Array.isArray(object.connections))
@@ -17100,7 +17757,7 @@
                                 for (var i = 0; i < object.connections.length; ++i) {
                                     if (typeof object.connections[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.connections: object expected");
-                                    message.connections[i] = $root.google.cloud.securitycenter.v1.Connection.fromObject(object.connections[i]);
+                                    message.connections[i] = $root.google.cloud.securitycenter.v1.Connection.fromObject(object.connections[i], long + 1);
                                 }
                             }
                             if (object.muteInitiator != null)
@@ -17108,7 +17765,7 @@
                             if (object.muteInfo != null) {
                                 if (typeof object.muteInfo !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.muteInfo: object expected");
-                                message.muteInfo = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.fromObject(object.muteInfo);
+                                message.muteInfo = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.fromObject(object.muteInfo, long + 1);
                             }
                             if (object.processes) {
                                 if (!Array.isArray(object.processes))
@@ -17117,7 +17774,7 @@
                                 for (var i = 0; i < object.processes.length; ++i) {
                                     if (typeof object.processes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.processes: object expected");
-                                    message.processes[i] = $root.google.cloud.securitycenter.v1.Process.fromObject(object.processes[i]);
+                                    message.processes[i] = $root.google.cloud.securitycenter.v1.Process.fromObject(object.processes[i], long + 1);
                                 }
                             }
                             if (object.contacts) {
@@ -17125,9 +17782,11 @@
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.contacts: object expected");
                                 message.contacts = {};
                                 for (var keys = Object.keys(object.contacts), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.contacts, keys[i]);
                                     if (typeof object.contacts[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.contacts: object expected");
-                                    message.contacts[keys[i]] = $root.google.cloud.securitycenter.v1.ContactDetails.fromObject(object.contacts[keys[i]]);
+                                    message.contacts[keys[i]] = $root.google.cloud.securitycenter.v1.ContactDetails.fromObject(object.contacts[keys[i]], long + 1);
                                 }
                             }
                             if (object.compliances) {
@@ -17137,7 +17796,7 @@
                                 for (var i = 0; i < object.compliances.length; ++i) {
                                     if (typeof object.compliances[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.compliances: object expected");
-                                    message.compliances[i] = $root.google.cloud.securitycenter.v1.Compliance.fromObject(object.compliances[i]);
+                                    message.compliances[i] = $root.google.cloud.securitycenter.v1.Compliance.fromObject(object.compliances[i], long + 1);
                                 }
                             }
                             if (object.parentDisplayName != null)
@@ -17147,7 +17806,7 @@
                             if (object.exfiltration != null) {
                                 if (typeof object.exfiltration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.exfiltration: object expected");
-                                message.exfiltration = $root.google.cloud.securitycenter.v1.Exfiltration.fromObject(object.exfiltration);
+                                message.exfiltration = $root.google.cloud.securitycenter.v1.Exfiltration.fromObject(object.exfiltration, long + 1);
                             }
                             if (object.iamBindings) {
                                 if (!Array.isArray(object.iamBindings))
@@ -17156,7 +17815,7 @@
                                 for (var i = 0; i < object.iamBindings.length; ++i) {
                                     if (typeof object.iamBindings[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.iamBindings: object expected");
-                                    message.iamBindings[i] = $root.google.cloud.securitycenter.v1.IamBinding.fromObject(object.iamBindings[i]);
+                                    message.iamBindings[i] = $root.google.cloud.securitycenter.v1.IamBinding.fromObject(object.iamBindings[i], long + 1);
                                 }
                             }
                             if (object.nextSteps != null)
@@ -17170,23 +17829,23 @@
                                 for (var i = 0; i < object.containers.length; ++i) {
                                     if (typeof object.containers[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.containers: object expected");
-                                    message.containers[i] = $root.google.cloud.securitycenter.v1.Container.fromObject(object.containers[i]);
+                                    message.containers[i] = $root.google.cloud.securitycenter.v1.Container.fromObject(object.containers[i], long + 1);
                                 }
                             }
                             if (object.kubernetes != null) {
                                 if (typeof object.kubernetes !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.kubernetes: object expected");
-                                message.kubernetes = $root.google.cloud.securitycenter.v1.Kubernetes.fromObject(object.kubernetes);
+                                message.kubernetes = $root.google.cloud.securitycenter.v1.Kubernetes.fromObject(object.kubernetes, long + 1);
                             }
                             if (object.database != null) {
                                 if (typeof object.database !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.database: object expected");
-                                message.database = $root.google.cloud.securitycenter.v1.Database.fromObject(object.database);
+                                message.database = $root.google.cloud.securitycenter.v1.Database.fromObject(object.database, long + 1);
                             }
                             if (object.attackExposure != null) {
                                 if (typeof object.attackExposure !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.attackExposure: object expected");
-                                message.attackExposure = $root.google.cloud.securitycenter.v1.AttackExposure.fromObject(object.attackExposure);
+                                message.attackExposure = $root.google.cloud.securitycenter.v1.AttackExposure.fromObject(object.attackExposure, long + 1);
                             }
                             if (object.files) {
                                 if (!Array.isArray(object.files))
@@ -17195,23 +17854,23 @@
                                 for (var i = 0; i < object.files.length; ++i) {
                                     if (typeof object.files[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.files: object expected");
-                                    message.files[i] = $root.google.cloud.securitycenter.v1.File.fromObject(object.files[i]);
+                                    message.files[i] = $root.google.cloud.securitycenter.v1.File.fromObject(object.files[i], long + 1);
                                 }
                             }
                             if (object.cloudDlpInspection != null) {
                                 if (typeof object.cloudDlpInspection !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.cloudDlpInspection: object expected");
-                                message.cloudDlpInspection = $root.google.cloud.securitycenter.v1.CloudDlpInspection.fromObject(object.cloudDlpInspection);
+                                message.cloudDlpInspection = $root.google.cloud.securitycenter.v1.CloudDlpInspection.fromObject(object.cloudDlpInspection, long + 1);
                             }
                             if (object.cloudDlpDataProfile != null) {
                                 if (typeof object.cloudDlpDataProfile !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.cloudDlpDataProfile: object expected");
-                                message.cloudDlpDataProfile = $root.google.cloud.securitycenter.v1.CloudDlpDataProfile.fromObject(object.cloudDlpDataProfile);
+                                message.cloudDlpDataProfile = $root.google.cloud.securitycenter.v1.CloudDlpDataProfile.fromObject(object.cloudDlpDataProfile, long + 1);
                             }
                             if (object.kernelRootkit != null) {
                                 if (typeof object.kernelRootkit !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.kernelRootkit: object expected");
-                                message.kernelRootkit = $root.google.cloud.securitycenter.v1.KernelRootkit.fromObject(object.kernelRootkit);
+                                message.kernelRootkit = $root.google.cloud.securitycenter.v1.KernelRootkit.fromObject(object.kernelRootkit, long + 1);
                             }
                             if (object.orgPolicies) {
                                 if (!Array.isArray(object.orgPolicies))
@@ -17220,23 +17879,23 @@
                                 for (var i = 0; i < object.orgPolicies.length; ++i) {
                                     if (typeof object.orgPolicies[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.orgPolicies: object expected");
-                                    message.orgPolicies[i] = $root.google.cloud.securitycenter.v1.OrgPolicy.fromObject(object.orgPolicies[i]);
+                                    message.orgPolicies[i] = $root.google.cloud.securitycenter.v1.OrgPolicy.fromObject(object.orgPolicies[i], long + 1);
                                 }
                             }
                             if (object.application != null) {
                                 if (typeof object.application !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.application: object expected");
-                                message.application = $root.google.cloud.securitycenter.v1.Application.fromObject(object.application);
+                                message.application = $root.google.cloud.securitycenter.v1.Application.fromObject(object.application, long + 1);
                             }
                             if (object.backupDisasterRecovery != null) {
                                 if (typeof object.backupDisasterRecovery !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.backupDisasterRecovery: object expected");
-                                message.backupDisasterRecovery = $root.google.cloud.securitycenter.v1.BackupDisasterRecovery.fromObject(object.backupDisasterRecovery);
+                                message.backupDisasterRecovery = $root.google.cloud.securitycenter.v1.BackupDisasterRecovery.fromObject(object.backupDisasterRecovery, long + 1);
                             }
                             if (object.securityPosture != null) {
                                 if (typeof object.securityPosture !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.securityPosture: object expected");
-                                message.securityPosture = $root.google.cloud.securitycenter.v1.SecurityPosture.fromObject(object.securityPosture);
+                                message.securityPosture = $root.google.cloud.securitycenter.v1.SecurityPosture.fromObject(object.securityPosture, long + 1);
                             }
                             if (object.logEntries) {
                                 if (!Array.isArray(object.logEntries))
@@ -17245,7 +17904,7 @@
                                 for (var i = 0; i < object.logEntries.length; ++i) {
                                     if (typeof object.logEntries[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.logEntries: object expected");
-                                    message.logEntries[i] = $root.google.cloud.securitycenter.v1.LogEntry.fromObject(object.logEntries[i]);
+                                    message.logEntries[i] = $root.google.cloud.securitycenter.v1.LogEntry.fromObject(object.logEntries[i], long + 1);
                                 }
                             }
                             if (object.loadBalancers) {
@@ -17255,23 +17914,23 @@
                                 for (var i = 0; i < object.loadBalancers.length; ++i) {
                                     if (typeof object.loadBalancers[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.loadBalancers: object expected");
-                                    message.loadBalancers[i] = $root.google.cloud.securitycenter.v1.LoadBalancer.fromObject(object.loadBalancers[i]);
+                                    message.loadBalancers[i] = $root.google.cloud.securitycenter.v1.LoadBalancer.fromObject(object.loadBalancers[i], long + 1);
                                 }
                             }
                             if (object.cloudArmor != null) {
                                 if (typeof object.cloudArmor !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.cloudArmor: object expected");
-                                message.cloudArmor = $root.google.cloud.securitycenter.v1.CloudArmor.fromObject(object.cloudArmor);
+                                message.cloudArmor = $root.google.cloud.securitycenter.v1.CloudArmor.fromObject(object.cloudArmor, long + 1);
                             }
                             if (object.notebook != null) {
                                 if (typeof object.notebook !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.notebook: object expected");
-                                message.notebook = $root.google.cloud.securitycenter.v1.Notebook.fromObject(object.notebook);
+                                message.notebook = $root.google.cloud.securitycenter.v1.Notebook.fromObject(object.notebook, long + 1);
                             }
                             if (object.toxicCombination != null) {
                                 if (typeof object.toxicCombination !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.toxicCombination: object expected");
-                                message.toxicCombination = $root.google.cloud.securitycenter.v1.ToxicCombination.fromObject(object.toxicCombination);
+                                message.toxicCombination = $root.google.cloud.securitycenter.v1.ToxicCombination.fromObject(object.toxicCombination, long + 1);
                             }
                             if (object.groupMemberships) {
                                 if (!Array.isArray(object.groupMemberships))
@@ -17280,18 +17939,18 @@
                                 for (var i = 0; i < object.groupMemberships.length; ++i) {
                                     if (typeof object.groupMemberships[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.groupMemberships: object expected");
-                                    message.groupMemberships[i] = $root.google.cloud.securitycenter.v1.GroupMembership.fromObject(object.groupMemberships[i]);
+                                    message.groupMemberships[i] = $root.google.cloud.securitycenter.v1.GroupMembership.fromObject(object.groupMemberships[i], long + 1);
                                 }
                             }
                             if (object.chokepoint != null) {
                                 if (typeof object.chokepoint !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.chokepoint: object expected");
-                                message.chokepoint = $root.google.cloud.securitycenter.v1.Chokepoint.fromObject(object.chokepoint);
+                                message.chokepoint = $root.google.cloud.securitycenter.v1.Chokepoint.fromObject(object.chokepoint, long + 1);
                             }
                             if (object.externalExposure != null) {
                                 if (typeof object.externalExposure !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Finding.externalExposure: object expected");
-                                message.externalExposure = $root.google.cloud.securitycenter.v1.ExternalExposure.fromObject(object.externalExposure);
+                                message.externalExposure = $root.google.cloud.securitycenter.v1.ExternalExposure.fromObject(object.externalExposure, long + 1);
                             }
                             return message;
                         };
@@ -17382,8 +18041,11 @@
                             var keys2;
                             if (message.sourceProperties && (keys2 = Object.keys(message.sourceProperties)).length) {
                                 object.sourceProperties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.sourceProperties, keys2[j]);
                                     object.sourceProperties[keys2[j]] = $root.google.protobuf.Value.toObject(message.sourceProperties[keys2[j]], options);
+                                }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks"))
                                 object.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.toObject(message.securityMarks, options);
@@ -17407,8 +18069,11 @@
                                 object.muteUpdateTime = $root.google.protobuf.Timestamp.toObject(message.muteUpdateTime, options);
                             if (message.externalSystems && (keys2 = Object.keys(message.externalSystems)).length) {
                                 object.externalSystems = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.externalSystems, keys2[j]);
                                     object.externalSystems[keys2[j]] = $root.google.cloud.securitycenter.v1.ExternalSystem.toObject(message.externalSystems[keys2[j]], options);
+                                }
                             }
                             if (message.mitreAttack != null && message.hasOwnProperty("mitreAttack"))
                                 object.mitreAttack = $root.google.cloud.securitycenter.v1.MitreAttack.toObject(message.mitreAttack, options);
@@ -17428,8 +18093,11 @@
                             }
                             if (message.contacts && (keys2 = Object.keys(message.contacts)).length) {
                                 object.contacts = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.contacts, keys2[j]);
                                     object.contacts[keys2[j]] = $root.google.cloud.securitycenter.v1.ContactDetails.toObject(message.contacts[keys2[j]], options);
+                                }
                             }
                             if (message.compliances && message.compliances.length) {
                                 object.compliances = [];
@@ -17648,7 +18316,7 @@
                                 this.dynamicMuteRecords = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -17724,9 +18392,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            MuteInfo.decode = function decode(reader, length, error) {
+                            MuteInfo.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Finding.MuteInfo();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -17734,17 +18406,17 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.staticMute = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute.decode(reader, reader.uint32());
+                                            message.staticMute = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 2: {
                                             if (!(message.dynamicMuteRecords && message.dynamicMuteRecords.length))
                                                 message.dynamicMuteRecords = [];
-                                            message.dynamicMuteRecords.push($root.google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord.decode(reader, reader.uint32()));
+                                            message.dynamicMuteRecords.push($root.google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -17775,11 +18447,15 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            MuteInfo.verify = function verify(message) {
+                            MuteInfo.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.staticMute != null && message.hasOwnProperty("staticMute")) {
-                                    var error = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute.verify(message.staticMute);
+                                    var error = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute.verify(message.staticMute, long + 1);
                                     if (error)
                                         return "staticMute." + error;
                                 }
@@ -17787,7 +18463,7 @@
                                     if (!Array.isArray(message.dynamicMuteRecords))
                                         return "dynamicMuteRecords: array expected";
                                     for (var i = 0; i < message.dynamicMuteRecords.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord.verify(message.dynamicMuteRecords[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord.verify(message.dynamicMuteRecords[i], long + 1);
                                         if (error)
                                             return "dynamicMuteRecords." + error;
                                     }
@@ -17803,14 +18479,18 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Finding.MuteInfo} MuteInfo
                              */
-                            MuteInfo.fromObject = function fromObject(object) {
+                            MuteInfo.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Finding.MuteInfo)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Finding.MuteInfo();
                                 if (object.staticMute != null) {
                                     if (typeof object.staticMute !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Finding.MuteInfo.staticMute: object expected");
-                                    message.staticMute = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute.fromObject(object.staticMute);
+                                    message.staticMute = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute.fromObject(object.staticMute, long + 1);
                                 }
                                 if (object.dynamicMuteRecords) {
                                     if (!Array.isArray(object.dynamicMuteRecords))
@@ -17819,7 +18499,7 @@
                                     for (var i = 0; i < object.dynamicMuteRecords.length; ++i) {
                                         if (typeof object.dynamicMuteRecords[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.Finding.MuteInfo.dynamicMuteRecords: object expected");
-                                        message.dynamicMuteRecords[i] = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord.fromObject(object.dynamicMuteRecords[i]);
+                                        message.dynamicMuteRecords[i] = $root.google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord.fromObject(object.dynamicMuteRecords[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -17899,7 +18579,7 @@
                                 function StaticMute(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -17974,9 +18654,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                StaticMute.decode = function decode(reader, length, error) {
+                                StaticMute.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -17988,11 +18672,11 @@
                                                 break;
                                             }
                                         case 2: {
-                                                message.applyTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                                message.applyTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -18023,9 +18707,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                StaticMute.verify = function verify(message) {
+                                StaticMute.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.state != null && message.hasOwnProperty("state"))
                                         switch (message.state) {
                                         default:
@@ -18037,7 +18725,7 @@
                                             break;
                                         }
                                     if (message.applyTime != null && message.hasOwnProperty("applyTime")) {
-                                        var error = $root.google.protobuf.Timestamp.verify(message.applyTime);
+                                        var error = $root.google.protobuf.Timestamp.verify(message.applyTime, long + 1);
                                         if (error)
                                             return "applyTime." + error;
                                     }
@@ -18052,9 +18740,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute} StaticMute
                                  */
-                                StaticMute.fromObject = function fromObject(object) {
+                                StaticMute.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute();
                                     switch (object.state) {
                                     default:
@@ -18083,7 +18775,7 @@
                                     if (object.applyTime != null) {
                                         if (typeof object.applyTime !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.Finding.MuteInfo.StaticMute.applyTime: object expected");
-                                        message.applyTime = $root.google.protobuf.Timestamp.fromObject(object.applyTime);
+                                        message.applyTime = $root.google.protobuf.Timestamp.fromObject(object.applyTime, long + 1);
                                     }
                                     return message;
                                 };
@@ -18162,7 +18854,7 @@
                                 function DynamicMuteRecord(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -18237,9 +18929,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                DynamicMuteRecord.decode = function decode(reader, length, error) {
+                                DynamicMuteRecord.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -18251,11 +18947,11 @@
                                                 break;
                                             }
                                         case 2: {
-                                                message.matchTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                                message.matchTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -18286,14 +18982,18 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                DynamicMuteRecord.verify = function verify(message) {
+                                DynamicMuteRecord.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.muteConfig != null && message.hasOwnProperty("muteConfig"))
                                         if (!$util.isString(message.muteConfig))
                                             return "muteConfig: string expected";
                                     if (message.matchTime != null && message.hasOwnProperty("matchTime")) {
-                                        var error = $root.google.protobuf.Timestamp.verify(message.matchTime);
+                                        var error = $root.google.protobuf.Timestamp.verify(message.matchTime, long + 1);
                                         if (error)
                                             return "matchTime." + error;
                                     }
@@ -18308,16 +19008,20 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord} DynamicMuteRecord
                                  */
-                                DynamicMuteRecord.fromObject = function fromObject(object) {
+                                DynamicMuteRecord.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord();
                                     if (object.muteConfig != null)
                                         message.muteConfig = String(object.muteConfig);
                                     if (object.matchTime != null) {
                                         if (typeof object.matchTime !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.Finding.MuteInfo.DynamicMuteRecord.matchTime: object expected");
-                                        message.matchTime = $root.google.protobuf.Timestamp.fromObject(object.matchTime);
+                                        message.matchTime = $root.google.protobuf.Timestamp.fromObject(object.matchTime, long + 1);
                                     }
                                     return message;
                                 };
@@ -18402,7 +19106,7 @@
                         function GroupMembership(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -18477,9 +19181,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupMembership.decode = function decode(reader, length, error) {
+                        GroupMembership.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GroupMembership();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -18495,7 +19203,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -18526,9 +19234,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupMembership.verify = function verify(message) {
+                        GroupMembership.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.groupType != null && message.hasOwnProperty("groupType"))
                                 switch (message.groupType) {
                                 default:
@@ -18552,9 +19264,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GroupMembership} GroupMembership
                          */
-                        GroupMembership.fromObject = function fromObject(object) {
+                        GroupMembership.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GroupMembership)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GroupMembership();
                             switch (object.groupType) {
                             default:
@@ -18672,7 +19388,7 @@
                         function IamBinding(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -18757,9 +19473,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        IamBinding.decode = function decode(reader, length, error) {
+                        IamBinding.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.IamBinding();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -18779,7 +19499,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -18810,9 +19530,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        IamBinding.verify = function verify(message) {
+                        IamBinding.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.action != null && message.hasOwnProperty("action"))
                                 switch (message.action) {
                                 default:
@@ -18839,9 +19563,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.IamBinding} IamBinding
                          */
-                        IamBinding.fromObject = function fromObject(object) {
+                        IamBinding.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.IamBinding)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.IamBinding();
                             switch (object.action) {
                             default:
@@ -18969,7 +19697,7 @@
                             this.uris = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -19068,9 +19796,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Indicator.decode = function decode(reader, length, error) {
+                        Indicator.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Indicator();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -19092,7 +19824,7 @@
                                 case 3: {
                                         if (!(message.signatures && message.signatures.length))
                                             message.signatures = [];
-                                        message.signatures.push($root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.decode(reader, reader.uint32()));
+                                        message.signatures.push($root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 4: {
@@ -19102,7 +19834,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -19133,9 +19865,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Indicator.verify = function verify(message) {
+                        Indicator.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.ipAddresses != null && message.hasOwnProperty("ipAddresses")) {
                                 if (!Array.isArray(message.ipAddresses))
                                     return "ipAddresses: array expected";
@@ -19154,7 +19890,7 @@
                                 if (!Array.isArray(message.signatures))
                                     return "signatures: array expected";
                                 for (var i = 0; i < message.signatures.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.verify(message.signatures[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.verify(message.signatures[i], long + 1);
                                     if (error)
                                         return "signatures." + error;
                                 }
@@ -19177,9 +19913,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Indicator} Indicator
                          */
-                        Indicator.fromObject = function fromObject(object) {
+                        Indicator.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Indicator)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Indicator();
                             if (object.ipAddresses) {
                                 if (!Array.isArray(object.ipAddresses))
@@ -19202,7 +19942,7 @@
                                 for (var i = 0; i < object.signatures.length; ++i) {
                                     if (typeof object.signatures[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Indicator.signatures: object expected");
-                                    message.signatures[i] = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.fromObject(object.signatures[i]);
+                                    message.signatures[i] = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.fromObject(object.signatures[i], long + 1);
                                 }
                             }
                             if (object.uris) {
@@ -19305,7 +20045,7 @@
                             function ProcessSignature(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -19404,9 +20144,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ProcessSignature.decode = function decode(reader, length, error) {
+                            ProcessSignature.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -19414,11 +20158,11 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 6: {
-                                            message.memoryHashSignature = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.decode(reader, reader.uint32());
+                                            message.memoryHashSignature = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 7: {
-                                            message.yaraRuleSignature = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature.decode(reader, reader.uint32());
+                                            message.yaraRuleSignature = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 8: {
@@ -19426,7 +20170,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -19457,14 +20201,18 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ProcessSignature.verify = function verify(message) {
+                            ProcessSignature.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 var properties = {};
                                 if (message.memoryHashSignature != null && message.hasOwnProperty("memoryHashSignature")) {
                                     properties.signature = 1;
                                     {
-                                        var error = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.verify(message.memoryHashSignature);
+                                        var error = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.verify(message.memoryHashSignature, long + 1);
                                         if (error)
                                             return "memoryHashSignature." + error;
                                     }
@@ -19474,7 +20222,7 @@
                                         return "signature: multiple values";
                                     properties.signature = 1;
                                     {
-                                        var error = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature.verify(message.yaraRuleSignature);
+                                        var error = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature.verify(message.yaraRuleSignature, long + 1);
                                         if (error)
                                             return "yaraRuleSignature." + error;
                                     }
@@ -19499,19 +20247,23 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Indicator.ProcessSignature} ProcessSignature
                              */
-                            ProcessSignature.fromObject = function fromObject(object) {
+                            ProcessSignature.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature();
                                 if (object.memoryHashSignature != null) {
                                     if (typeof object.memoryHashSignature !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Indicator.ProcessSignature.memoryHashSignature: object expected");
-                                    message.memoryHashSignature = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.fromObject(object.memoryHashSignature);
+                                    message.memoryHashSignature = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.fromObject(object.memoryHashSignature, long + 1);
                                 }
                                 if (object.yaraRuleSignature != null) {
                                     if (typeof object.yaraRuleSignature !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Indicator.ProcessSignature.yaraRuleSignature: object expected");
-                                    message.yaraRuleSignature = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature.fromObject(object.yaraRuleSignature);
+                                    message.yaraRuleSignature = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature.fromObject(object.yaraRuleSignature, long + 1);
                                 }
                                 switch (object.signatureType) {
                                 default:
@@ -19614,7 +20366,7 @@
                                     this.detections = [];
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -19690,9 +20442,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                MemoryHashSignature.decode = function decode(reader, length, error) {
+                                MemoryHashSignature.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -19706,11 +20462,11 @@
                                         case 4: {
                                                 if (!(message.detections && message.detections.length))
                                                     message.detections = [];
-                                                message.detections.push($root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection.decode(reader, reader.uint32()));
+                                                message.detections.push($root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection.decode(reader, reader.uint32(), undefined, long + 1));
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -19741,9 +20497,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                MemoryHashSignature.verify = function verify(message) {
+                                MemoryHashSignature.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.binaryFamily != null && message.hasOwnProperty("binaryFamily"))
                                         if (!$util.isString(message.binaryFamily))
                                             return "binaryFamily: string expected";
@@ -19751,7 +20511,7 @@
                                         if (!Array.isArray(message.detections))
                                             return "detections: array expected";
                                         for (var i = 0; i < message.detections.length; ++i) {
-                                            var error = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection.verify(message.detections[i]);
+                                            var error = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection.verify(message.detections[i], long + 1);
                                             if (error)
                                                 return "detections." + error;
                                         }
@@ -19767,9 +20527,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature} MemoryHashSignature
                                  */
-                                MemoryHashSignature.fromObject = function fromObject(object) {
+                                MemoryHashSignature.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature();
                                     if (object.binaryFamily != null)
                                         message.binaryFamily = String(object.binaryFamily);
@@ -19780,7 +20544,7 @@
                                         for (var i = 0; i < object.detections.length; ++i) {
                                             if (typeof object.detections[i] !== "object")
                                                 throw TypeError(".google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.detections: object expected");
-                                            message.detections[i] = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection.fromObject(object.detections[i]);
+                                            message.detections[i] = $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection.fromObject(object.detections[i], long + 1);
                                         }
                                     }
                                     return message;
@@ -19860,7 +20624,7 @@
                                     function Detection(properties) {
                                         if (properties)
                                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                                if (properties[keys[i]] != null)
+                                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                     this[keys[i]] = properties[keys[i]];
                                     }
     
@@ -19935,9 +20699,13 @@
                                      * @throws {Error} If the payload is not a reader or valid buffer
                                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                      */
-                                    Detection.decode = function decode(reader, length, error) {
+                                    Detection.decode = function decode(reader, length, error, long) {
                                         if (!(reader instanceof $Reader))
                                             reader = $Reader.create(reader);
+                                        if (long === undefined)
+                                            long = 0;
+                                        if (long > $Reader.recursionLimit)
+                                            throw Error("maximum nesting depth exceeded");
                                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection();
                                         while (reader.pos < end) {
                                             var tag = reader.uint32();
@@ -19953,7 +20721,7 @@
                                                     break;
                                                 }
                                             default:
-                                                reader.skipType(tag & 7);
+                                                reader.skipType(tag & 7, long);
                                                 break;
                                             }
                                         }
@@ -19984,9 +20752,13 @@
                                      * @param {Object.<string,*>} message Plain object to verify
                                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                      */
-                                    Detection.verify = function verify(message) {
+                                    Detection.verify = function verify(message, long) {
                                         if (typeof message !== "object" || message === null)
                                             return "object expected";
+                                        if (long === undefined)
+                                            long = 0;
+                                        if (long > $util.recursionLimit)
+                                            return "maximum nesting depth exceeded";
                                         if (message.binary != null && message.hasOwnProperty("binary"))
                                             if (!$util.isString(message.binary))
                                                 return "binary: string expected";
@@ -20004,9 +20776,13 @@
                                      * @param {Object.<string,*>} object Plain object
                                      * @returns {google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection} Detection
                                      */
-                                    Detection.fromObject = function fromObject(object) {
+                                    Detection.fromObject = function fromObject(object, long) {
                                         if (object instanceof $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection)
                                             return object;
+                                        if (long === undefined)
+                                            long = 0;
+                                        if (long > $util.recursionLimit)
+                                            throw Error("maximum nesting depth exceeded");
                                         var message = new $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.MemoryHashSignature.Detection();
                                         if (object.binary != null)
                                             message.binary = String(object.binary);
@@ -20091,7 +20867,7 @@
                                 function YaraRuleSignature(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -20156,9 +20932,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                YaraRuleSignature.decode = function decode(reader, length, error) {
+                                YaraRuleSignature.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -20170,7 +20950,7 @@
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -20201,9 +20981,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                YaraRuleSignature.verify = function verify(message) {
+                                YaraRuleSignature.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.yaraRule != null && message.hasOwnProperty("yaraRule"))
                                         if (!$util.isString(message.yaraRule))
                                             return "yaraRule: string expected";
@@ -20218,9 +21002,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature} YaraRuleSignature
                                  */
-                                YaraRuleSignature.fromObject = function fromObject(object) {
+                                YaraRuleSignature.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v1.Indicator.ProcessSignature.YaraRuleSignature();
                                     if (object.yaraRule != null)
                                         message.yaraRule = String(object.yaraRule);
@@ -20326,7 +21114,7 @@
                         function KernelRootkit(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -20471,9 +21259,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        KernelRootkit.decode = function decode(reader, length, error) {
+                        KernelRootkit.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.KernelRootkit();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -20517,7 +21309,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -20548,9 +21340,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        KernelRootkit.verify = function verify(message) {
+                        KernelRootkit.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -20589,9 +21385,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.KernelRootkit} KernelRootkit
                          */
-                        KernelRootkit.fromObject = function fromObject(object) {
+                        KernelRootkit.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.KernelRootkit)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.KernelRootkit();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -20721,7 +21521,7 @@
                             this.objects = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -20853,9 +21653,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Kubernetes.decode = function decode(reader, length, error) {
+                        Kubernetes.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Kubernetes();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -20865,47 +21669,47 @@
                                 case 1: {
                                         if (!(message.pods && message.pods.length))
                                             message.pods = [];
-                                        message.pods.push($root.google.cloud.securitycenter.v1.Kubernetes.Pod.decode(reader, reader.uint32()));
+                                        message.pods.push($root.google.cloud.securitycenter.v1.Kubernetes.Pod.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
                                         if (!(message.nodes && message.nodes.length))
                                             message.nodes = [];
-                                        message.nodes.push($root.google.cloud.securitycenter.v1.Kubernetes.Node.decode(reader, reader.uint32()));
+                                        message.nodes.push($root.google.cloud.securitycenter.v1.Kubernetes.Node.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.nodePools && message.nodePools.length))
                                             message.nodePools = [];
-                                        message.nodePools.push($root.google.cloud.securitycenter.v1.Kubernetes.NodePool.decode(reader, reader.uint32()));
+                                        message.nodePools.push($root.google.cloud.securitycenter.v1.Kubernetes.NodePool.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 4: {
                                         if (!(message.roles && message.roles.length))
                                             message.roles = [];
-                                        message.roles.push($root.google.cloud.securitycenter.v1.Kubernetes.Role.decode(reader, reader.uint32()));
+                                        message.roles.push($root.google.cloud.securitycenter.v1.Kubernetes.Role.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 5: {
                                         if (!(message.bindings && message.bindings.length))
                                             message.bindings = [];
-                                        message.bindings.push($root.google.cloud.securitycenter.v1.Kubernetes.Binding.decode(reader, reader.uint32()));
+                                        message.bindings.push($root.google.cloud.securitycenter.v1.Kubernetes.Binding.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 6: {
                                         if (!(message.accessReviews && message.accessReviews.length))
                                             message.accessReviews = [];
-                                        message.accessReviews.push($root.google.cloud.securitycenter.v1.Kubernetes.AccessReview.decode(reader, reader.uint32()));
+                                        message.accessReviews.push($root.google.cloud.securitycenter.v1.Kubernetes.AccessReview.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 7: {
                                         if (!(message.objects && message.objects.length))
                                             message.objects = [];
-                                        message.objects.push($root.google.cloud.securitycenter.v1.Kubernetes.Object.decode(reader, reader.uint32()));
+                                        message.objects.push($root.google.cloud.securitycenter.v1.Kubernetes.Object.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -20936,14 +21740,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Kubernetes.verify = function verify(message) {
+                        Kubernetes.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.pods != null && message.hasOwnProperty("pods")) {
                                 if (!Array.isArray(message.pods))
                                     return "pods: array expected";
                                 for (var i = 0; i < message.pods.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Pod.verify(message.pods[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Pod.verify(message.pods[i], long + 1);
                                     if (error)
                                         return "pods." + error;
                                 }
@@ -20952,7 +21760,7 @@
                                 if (!Array.isArray(message.nodes))
                                     return "nodes: array expected";
                                 for (var i = 0; i < message.nodes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Node.verify(message.nodes[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Node.verify(message.nodes[i], long + 1);
                                     if (error)
                                         return "nodes." + error;
                                 }
@@ -20961,7 +21769,7 @@
                                 if (!Array.isArray(message.nodePools))
                                     return "nodePools: array expected";
                                 for (var i = 0; i < message.nodePools.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.NodePool.verify(message.nodePools[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.NodePool.verify(message.nodePools[i], long + 1);
                                     if (error)
                                         return "nodePools." + error;
                                 }
@@ -20970,7 +21778,7 @@
                                 if (!Array.isArray(message.roles))
                                     return "roles: array expected";
                                 for (var i = 0; i < message.roles.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Role.verify(message.roles[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Role.verify(message.roles[i], long + 1);
                                     if (error)
                                         return "roles." + error;
                                 }
@@ -20979,7 +21787,7 @@
                                 if (!Array.isArray(message.bindings))
                                     return "bindings: array expected";
                                 for (var i = 0; i < message.bindings.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Binding.verify(message.bindings[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Binding.verify(message.bindings[i], long + 1);
                                     if (error)
                                         return "bindings." + error;
                                 }
@@ -20988,7 +21796,7 @@
                                 if (!Array.isArray(message.accessReviews))
                                     return "accessReviews: array expected";
                                 for (var i = 0; i < message.accessReviews.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.AccessReview.verify(message.accessReviews[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.AccessReview.verify(message.accessReviews[i], long + 1);
                                     if (error)
                                         return "accessReviews." + error;
                                 }
@@ -20997,7 +21805,7 @@
                                 if (!Array.isArray(message.objects))
                                     return "objects: array expected";
                                 for (var i = 0; i < message.objects.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Object.verify(message.objects[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Object.verify(message.objects[i], long + 1);
                                     if (error)
                                         return "objects." + error;
                                 }
@@ -21013,9 +21821,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Kubernetes} Kubernetes
                          */
-                        Kubernetes.fromObject = function fromObject(object) {
+                        Kubernetes.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Kubernetes)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Kubernetes();
                             if (object.pods) {
                                 if (!Array.isArray(object.pods))
@@ -21024,7 +21836,7 @@
                                 for (var i = 0; i < object.pods.length; ++i) {
                                     if (typeof object.pods[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.pods: object expected");
-                                    message.pods[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Pod.fromObject(object.pods[i]);
+                                    message.pods[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Pod.fromObject(object.pods[i], long + 1);
                                 }
                             }
                             if (object.nodes) {
@@ -21034,7 +21846,7 @@
                                 for (var i = 0; i < object.nodes.length; ++i) {
                                     if (typeof object.nodes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.nodes: object expected");
-                                    message.nodes[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Node.fromObject(object.nodes[i]);
+                                    message.nodes[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Node.fromObject(object.nodes[i], long + 1);
                                 }
                             }
                             if (object.nodePools) {
@@ -21044,7 +21856,7 @@
                                 for (var i = 0; i < object.nodePools.length; ++i) {
                                     if (typeof object.nodePools[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.nodePools: object expected");
-                                    message.nodePools[i] = $root.google.cloud.securitycenter.v1.Kubernetes.NodePool.fromObject(object.nodePools[i]);
+                                    message.nodePools[i] = $root.google.cloud.securitycenter.v1.Kubernetes.NodePool.fromObject(object.nodePools[i], long + 1);
                                 }
                             }
                             if (object.roles) {
@@ -21054,7 +21866,7 @@
                                 for (var i = 0; i < object.roles.length; ++i) {
                                     if (typeof object.roles[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.roles: object expected");
-                                    message.roles[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Role.fromObject(object.roles[i]);
+                                    message.roles[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Role.fromObject(object.roles[i], long + 1);
                                 }
                             }
                             if (object.bindings) {
@@ -21064,7 +21876,7 @@
                                 for (var i = 0; i < object.bindings.length; ++i) {
                                     if (typeof object.bindings[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.bindings: object expected");
-                                    message.bindings[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Binding.fromObject(object.bindings[i]);
+                                    message.bindings[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Binding.fromObject(object.bindings[i], long + 1);
                                 }
                             }
                             if (object.accessReviews) {
@@ -21074,7 +21886,7 @@
                                 for (var i = 0; i < object.accessReviews.length; ++i) {
                                     if (typeof object.accessReviews[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.accessReviews: object expected");
-                                    message.accessReviews[i] = $root.google.cloud.securitycenter.v1.Kubernetes.AccessReview.fromObject(object.accessReviews[i]);
+                                    message.accessReviews[i] = $root.google.cloud.securitycenter.v1.Kubernetes.AccessReview.fromObject(object.accessReviews[i], long + 1);
                                 }
                             }
                             if (object.objects) {
@@ -21084,7 +21896,7 @@
                                 for (var i = 0; i < object.objects.length; ++i) {
                                     if (typeof object.objects[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.objects: object expected");
-                                    message.objects[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Object.fromObject(object.objects[i]);
+                                    message.objects[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Object.fromObject(object.objects[i], long + 1);
                                 }
                             }
                             return message;
@@ -21201,7 +22013,7 @@
                                 this.containers = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -21298,9 +22110,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Pod.decode = function decode(reader, length, error) {
+                            Pod.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Kubernetes.Pod();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -21318,17 +22134,17 @@
                                     case 3: {
                                             if (!(message.labels && message.labels.length))
                                                 message.labels = [];
-                                            message.labels.push($root.google.cloud.securitycenter.v1.Label.decode(reader, reader.uint32()));
+                                            message.labels.push($root.google.cloud.securitycenter.v1.Label.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     case 4: {
                                             if (!(message.containers && message.containers.length))
                                                 message.containers = [];
-                                            message.containers.push($root.google.cloud.securitycenter.v1.Container.decode(reader, reader.uint32()));
+                                            message.containers.push($root.google.cloud.securitycenter.v1.Container.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -21359,9 +22175,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Pod.verify = function verify(message) {
+                            Pod.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.ns != null && message.hasOwnProperty("ns"))
                                     if (!$util.isString(message.ns))
                                         return "ns: string expected";
@@ -21372,7 +22192,7 @@
                                     if (!Array.isArray(message.labels))
                                         return "labels: array expected";
                                     for (var i = 0; i < message.labels.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.Label.verify(message.labels[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.Label.verify(message.labels[i], long + 1);
                                         if (error)
                                             return "labels." + error;
                                     }
@@ -21381,7 +22201,7 @@
                                     if (!Array.isArray(message.containers))
                                         return "containers: array expected";
                                     for (var i = 0; i < message.containers.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.Container.verify(message.containers[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.Container.verify(message.containers[i], long + 1);
                                         if (error)
                                             return "containers." + error;
                                     }
@@ -21397,9 +22217,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Kubernetes.Pod} Pod
                              */
-                            Pod.fromObject = function fromObject(object) {
+                            Pod.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Kubernetes.Pod)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Kubernetes.Pod();
                                 if (object.ns != null)
                                     message.ns = String(object.ns);
@@ -21412,7 +22236,7 @@
                                     for (var i = 0; i < object.labels.length; ++i) {
                                         if (typeof object.labels[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.Pod.labels: object expected");
-                                        message.labels[i] = $root.google.cloud.securitycenter.v1.Label.fromObject(object.labels[i]);
+                                        message.labels[i] = $root.google.cloud.securitycenter.v1.Label.fromObject(object.labels[i], long + 1);
                                     }
                                 }
                                 if (object.containers) {
@@ -21422,7 +22246,7 @@
                                     for (var i = 0; i < object.containers.length; ++i) {
                                         if (typeof object.containers[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.Pod.containers: object expected");
-                                        message.containers[i] = $root.google.cloud.securitycenter.v1.Container.fromObject(object.containers[i]);
+                                        message.containers[i] = $root.google.cloud.securitycenter.v1.Container.fromObject(object.containers[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -21515,7 +22339,7 @@
                             function Node(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -21580,9 +22404,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Node.decode = function decode(reader, length, error) {
+                            Node.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Kubernetes.Node();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -21594,7 +22422,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -21625,9 +22453,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Node.verify = function verify(message) {
+                            Node.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.name != null && message.hasOwnProperty("name"))
                                     if (!$util.isString(message.name))
                                         return "name: string expected";
@@ -21642,9 +22474,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Kubernetes.Node} Node
                              */
-                            Node.fromObject = function fromObject(object) {
+                            Node.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Kubernetes.Node)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Kubernetes.Node();
                                 if (object.name != null)
                                     message.name = String(object.name);
@@ -21722,7 +22558,7 @@
                                 this.nodes = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -21798,9 +22634,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            NodePool.decode = function decode(reader, length, error) {
+                            NodePool.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Kubernetes.NodePool();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -21814,11 +22654,11 @@
                                     case 2: {
                                             if (!(message.nodes && message.nodes.length))
                                                 message.nodes = [];
-                                            message.nodes.push($root.google.cloud.securitycenter.v1.Kubernetes.Node.decode(reader, reader.uint32()));
+                                            message.nodes.push($root.google.cloud.securitycenter.v1.Kubernetes.Node.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -21849,9 +22689,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            NodePool.verify = function verify(message) {
+                            NodePool.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.name != null && message.hasOwnProperty("name"))
                                     if (!$util.isString(message.name))
                                         return "name: string expected";
@@ -21859,7 +22703,7 @@
                                     if (!Array.isArray(message.nodes))
                                         return "nodes: array expected";
                                     for (var i = 0; i < message.nodes.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.Kubernetes.Node.verify(message.nodes[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.Kubernetes.Node.verify(message.nodes[i], long + 1);
                                         if (error)
                                             return "nodes." + error;
                                     }
@@ -21875,9 +22719,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Kubernetes.NodePool} NodePool
                              */
-                            NodePool.fromObject = function fromObject(object) {
+                            NodePool.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Kubernetes.NodePool)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Kubernetes.NodePool();
                                 if (object.name != null)
                                     message.name = String(object.name);
@@ -21888,7 +22736,7 @@
                                     for (var i = 0; i < object.nodes.length; ++i) {
                                         if (typeof object.nodes[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.NodePool.nodes: object expected");
-                                        message.nodes[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Node.fromObject(object.nodes[i]);
+                                        message.nodes[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Node.fromObject(object.nodes[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -21972,7 +22820,7 @@
                             function Role(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -22057,9 +22905,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Role.decode = function decode(reader, length, error) {
+                            Role.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Kubernetes.Role();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -22079,7 +22931,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -22110,9 +22962,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Role.verify = function verify(message) {
+                            Role.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.kind != null && message.hasOwnProperty("kind"))
                                     switch (message.kind) {
                                     default:
@@ -22139,9 +22995,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Kubernetes.Role} Role
                              */
-                            Role.fromObject = function fromObject(object) {
+                            Role.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Kubernetes.Role)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Kubernetes.Role();
                                 switch (object.kind) {
                                 default:
@@ -22266,7 +23126,7 @@
                                 this.subjects = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -22362,9 +23222,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Binding.decode = function decode(reader, length, error) {
+                            Binding.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Kubernetes.Binding();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -22380,17 +23244,17 @@
                                             break;
                                         }
                                     case 3: {
-                                            message.role = $root.google.cloud.securitycenter.v1.Kubernetes.Role.decode(reader, reader.uint32());
+                                            message.role = $root.google.cloud.securitycenter.v1.Kubernetes.Role.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 4: {
                                             if (!(message.subjects && message.subjects.length))
                                                 message.subjects = [];
-                                            message.subjects.push($root.google.cloud.securitycenter.v1.Kubernetes.Subject.decode(reader, reader.uint32()));
+                                            message.subjects.push($root.google.cloud.securitycenter.v1.Kubernetes.Subject.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -22421,9 +23285,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Binding.verify = function verify(message) {
+                            Binding.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.ns != null && message.hasOwnProperty("ns"))
                                     if (!$util.isString(message.ns))
                                         return "ns: string expected";
@@ -22431,7 +23299,7 @@
                                     if (!$util.isString(message.name))
                                         return "name: string expected";
                                 if (message.role != null && message.hasOwnProperty("role")) {
-                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Role.verify(message.role);
+                                    var error = $root.google.cloud.securitycenter.v1.Kubernetes.Role.verify(message.role, long + 1);
                                     if (error)
                                         return "role." + error;
                                 }
@@ -22439,7 +23307,7 @@
                                     if (!Array.isArray(message.subjects))
                                         return "subjects: array expected";
                                     for (var i = 0; i < message.subjects.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.Kubernetes.Subject.verify(message.subjects[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.Kubernetes.Subject.verify(message.subjects[i], long + 1);
                                         if (error)
                                             return "subjects." + error;
                                     }
@@ -22455,9 +23323,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Kubernetes.Binding} Binding
                              */
-                            Binding.fromObject = function fromObject(object) {
+                            Binding.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Kubernetes.Binding)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Kubernetes.Binding();
                                 if (object.ns != null)
                                     message.ns = String(object.ns);
@@ -22466,7 +23338,7 @@
                                 if (object.role != null) {
                                     if (typeof object.role !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.Binding.role: object expected");
-                                    message.role = $root.google.cloud.securitycenter.v1.Kubernetes.Role.fromObject(object.role);
+                                    message.role = $root.google.cloud.securitycenter.v1.Kubernetes.Role.fromObject(object.role, long + 1);
                                 }
                                 if (object.subjects) {
                                     if (!Array.isArray(object.subjects))
@@ -22475,7 +23347,7 @@
                                     for (var i = 0; i < object.subjects.length; ++i) {
                                         if (typeof object.subjects[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.Binding.subjects: object expected");
-                                        message.subjects[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Subject.fromObject(object.subjects[i]);
+                                        message.subjects[i] = $root.google.cloud.securitycenter.v1.Kubernetes.Subject.fromObject(object.subjects[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -22566,7 +23438,7 @@
                             function Subject(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -22651,9 +23523,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Subject.decode = function decode(reader, length, error) {
+                            Subject.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Kubernetes.Subject();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -22673,7 +23549,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -22704,9 +23580,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Subject.verify = function verify(message) {
+                            Subject.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.kind != null && message.hasOwnProperty("kind"))
                                     switch (message.kind) {
                                     default:
@@ -22734,9 +23614,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Kubernetes.Subject} Subject
                              */
-                            Subject.fromObject = function fromObject(object) {
+                            Subject.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Kubernetes.Subject)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Kubernetes.Subject();
                                 switch (object.kind) {
                                 default:
@@ -22869,7 +23753,7 @@
                             function AccessReview(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -22994,9 +23878,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AccessReview.decode = function decode(reader, length, error) {
+                            AccessReview.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Kubernetes.AccessReview();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -23032,7 +23920,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -23063,9 +23951,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AccessReview.verify = function verify(message) {
+                            AccessReview.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.group != null && message.hasOwnProperty("group"))
                                     if (!$util.isString(message.group))
                                         return "group: string expected";
@@ -23098,9 +23990,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Kubernetes.AccessReview} AccessReview
                              */
-                            AccessReview.fromObject = function fromObject(object) {
+                            AccessReview.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Kubernetes.AccessReview)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Kubernetes.AccessReview();
                                 if (object.group != null)
                                     message.group = String(object.group);
@@ -23212,7 +24108,7 @@
                                 this.containers = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -23318,9 +24214,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Object.decode = function decode(reader, length, error) {
+                            Object.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Kubernetes.Object();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -23346,11 +24246,11 @@
                                     case 5: {
                                             if (!(message.containers && message.containers.length))
                                                 message.containers = [];
-                                            message.containers.push($root.google.cloud.securitycenter.v1.Container.decode(reader, reader.uint32()));
+                                            message.containers.push($root.google.cloud.securitycenter.v1.Container.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -23381,9 +24281,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Object.verify = function verify(message) {
+                            Object.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.group != null && message.hasOwnProperty("group"))
                                     if (!$util.isString(message.group))
                                         return "group: string expected";
@@ -23400,7 +24304,7 @@
                                     if (!Array.isArray(message.containers))
                                         return "containers: array expected";
                                     for (var i = 0; i < message.containers.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1.Container.verify(message.containers[i]);
+                                        var error = $root.google.cloud.securitycenter.v1.Container.verify(message.containers[i], long + 1);
                                         if (error)
                                             return "containers." + error;
                                     }
@@ -23416,9 +24320,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.Kubernetes.Object} Object
                              */
-                            Object.fromObject = function fromObject(object) {
+                            Object.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.Kubernetes.Object)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.Kubernetes.Object();
                                 if (object.group != null)
                                     message.group = String(object.group);
@@ -23435,7 +24343,7 @@
                                     for (var i = 0; i < object.containers.length; ++i) {
                                         if (typeof object.containers[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.Kubernetes.Object.containers: object expected");
-                                        message.containers[i] = $root.google.cloud.securitycenter.v1.Container.fromObject(object.containers[i]);
+                                        message.containers[i] = $root.google.cloud.securitycenter.v1.Container.fromObject(object.containers[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -23530,7 +24438,7 @@
                         function LoadBalancer(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -23595,9 +24503,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        LoadBalancer.decode = function decode(reader, length, error) {
+                        LoadBalancer.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.LoadBalancer();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -23609,7 +24521,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -23640,9 +24552,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        LoadBalancer.verify = function verify(message) {
+                        LoadBalancer.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -23657,9 +24573,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.LoadBalancer} LoadBalancer
                          */
-                        LoadBalancer.fromObject = function fromObject(object) {
+                        LoadBalancer.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.LoadBalancer)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.LoadBalancer();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -23735,7 +24655,7 @@
                         function LogEntry(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -23814,9 +24734,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        LogEntry.decode = function decode(reader, length, error) {
+                        LogEntry.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.LogEntry();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -23824,11 +24748,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.cloudLoggingEntry = $root.google.cloud.securitycenter.v1.CloudLoggingEntry.decode(reader, reader.uint32());
+                                        message.cloudLoggingEntry = $root.google.cloud.securitycenter.v1.CloudLoggingEntry.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -23859,14 +24783,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        LogEntry.verify = function verify(message) {
+                        LogEntry.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.cloudLoggingEntry != null && message.hasOwnProperty("cloudLoggingEntry")) {
                                 properties.logEntry = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v1.CloudLoggingEntry.verify(message.cloudLoggingEntry);
+                                    var error = $root.google.cloud.securitycenter.v1.CloudLoggingEntry.verify(message.cloudLoggingEntry, long + 1);
                                     if (error)
                                         return "cloudLoggingEntry." + error;
                                 }
@@ -23882,14 +24810,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.LogEntry} LogEntry
                          */
-                        LogEntry.fromObject = function fromObject(object) {
+                        LogEntry.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.LogEntry)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.LogEntry();
                             if (object.cloudLoggingEntry != null) {
                                 if (typeof object.cloudLoggingEntry !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.LogEntry.cloudLoggingEntry: object expected");
-                                message.cloudLoggingEntry = $root.google.cloud.securitycenter.v1.CloudLoggingEntry.fromObject(object.cloudLoggingEntry);
+                                message.cloudLoggingEntry = $root.google.cloud.securitycenter.v1.CloudLoggingEntry.fromObject(object.cloudLoggingEntry, long + 1);
                             }
                             return message;
                         };
@@ -23967,7 +24899,7 @@
                         function CloudLoggingEntry(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -24062,9 +24994,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CloudLoggingEntry.decode = function decode(reader, length, error) {
+                        CloudLoggingEntry.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CloudLoggingEntry();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -24084,11 +25020,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.timestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.timestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -24119,9 +25055,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CloudLoggingEntry.verify = function verify(message) {
+                        CloudLoggingEntry.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.insertId != null && message.hasOwnProperty("insertId"))
                                 if (!$util.isString(message.insertId))
                                     return "insertId: string expected";
@@ -24132,7 +25072,7 @@
                                 if (!$util.isString(message.resourceContainer))
                                     return "resourceContainer: string expected";
                             if (message.timestamp != null && message.hasOwnProperty("timestamp")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.timestamp);
+                                var error = $root.google.protobuf.Timestamp.verify(message.timestamp, long + 1);
                                 if (error)
                                     return "timestamp." + error;
                             }
@@ -24147,9 +25087,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CloudLoggingEntry} CloudLoggingEntry
                          */
-                        CloudLoggingEntry.fromObject = function fromObject(object) {
+                        CloudLoggingEntry.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CloudLoggingEntry)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CloudLoggingEntry();
                             if (object.insertId != null)
                                 message.insertId = String(object.insertId);
@@ -24160,7 +25104,7 @@
                             if (object.timestamp != null) {
                                 if (typeof object.timestamp !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CloudLoggingEntry.timestamp: object expected");
-                                message.timestamp = $root.google.protobuf.Timestamp.fromObject(object.timestamp);
+                                message.timestamp = $root.google.protobuf.Timestamp.fromObject(object.timestamp, long + 1);
                             }
                             return message;
                         };
@@ -24251,7 +25195,7 @@
                             this.additionalTechniques = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -24368,9 +25312,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        MitreAttack.decode = function decode(reader, length, error) {
+                        MitreAttack.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.MitreAttack();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -24419,7 +25367,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -24450,9 +25398,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        MitreAttack.verify = function verify(message) {
+                        MitreAttack.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.primaryTactic != null && message.hasOwnProperty("primaryTactic"))
                                 switch (message.primaryTactic) {
                                 default:
@@ -24663,9 +25615,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.MitreAttack} MitreAttack
                          */
-                        MitreAttack.fromObject = function fromObject(object) {
+                        MitreAttack.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.MitreAttack)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.MitreAttack();
                             switch (object.primaryTactic) {
                             default:
@@ -25635,7 +26591,7 @@
                         function Notebook(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -25730,9 +26686,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Notebook.decode = function decode(reader, length, error) {
+                        Notebook.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Notebook();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -25752,11 +26712,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.notebookUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.notebookUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -25787,9 +26747,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Notebook.verify = function verify(message) {
+                        Notebook.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -25800,7 +26764,7 @@
                                 if (!$util.isString(message.lastAuthor))
                                     return "lastAuthor: string expected";
                             if (message.notebookUpdateTime != null && message.hasOwnProperty("notebookUpdateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.notebookUpdateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.notebookUpdateTime, long + 1);
                                 if (error)
                                     return "notebookUpdateTime." + error;
                             }
@@ -25815,9 +26779,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Notebook} Notebook
                          */
-                        Notebook.fromObject = function fromObject(object) {
+                        Notebook.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Notebook)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Notebook();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -25828,7 +26796,7 @@
                             if (object.notebookUpdateTime != null) {
                                 if (typeof object.notebookUpdateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Notebook.notebookUpdateTime: object expected");
-                                message.notebookUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.notebookUpdateTime);
+                                message.notebookUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.notebookUpdateTime, long + 1);
                             }
                             return message;
                         };
@@ -25912,7 +26880,7 @@
                         function OrgPolicy(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -25977,9 +26945,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        OrgPolicy.decode = function decode(reader, length, error) {
+                        OrgPolicy.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.OrgPolicy();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -25991,7 +26963,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -26022,9 +26994,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        OrgPolicy.verify = function verify(message) {
+                        OrgPolicy.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -26039,9 +27015,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.OrgPolicy} OrgPolicy
                          */
-                        OrgPolicy.fromObject = function fromObject(object) {
+                        OrgPolicy.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.OrgPolicy)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.OrgPolicy();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -26129,7 +27109,7 @@
                             this.envVariables = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -26287,9 +27267,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Process.decode = function decode(reader, length, error) {
+                        Process.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Process();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -26301,17 +27285,17 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.binary = $root.google.cloud.securitycenter.v1.File.decode(reader, reader.uint32());
+                                        message.binary = $root.google.cloud.securitycenter.v1.File.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
                                         if (!(message.libraries && message.libraries.length))
                                             message.libraries = [];
-                                        message.libraries.push($root.google.cloud.securitycenter.v1.File.decode(reader, reader.uint32()));
+                                        message.libraries.push($root.google.cloud.securitycenter.v1.File.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 5: {
-                                        message.script = $root.google.cloud.securitycenter.v1.File.decode(reader, reader.uint32());
+                                        message.script = $root.google.cloud.securitycenter.v1.File.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
@@ -26327,7 +27311,7 @@
                                 case 8: {
                                         if (!(message.envVariables && message.envVariables.length))
                                             message.envVariables = [];
-                                        message.envVariables.push($root.google.cloud.securitycenter.v1.EnvironmentVariable.decode(reader, reader.uint32()));
+                                        message.envVariables.push($root.google.cloud.securitycenter.v1.EnvironmentVariable.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 9: {
@@ -26343,7 +27327,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -26374,14 +27358,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Process.verify = function verify(message) {
+                        Process.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.binary != null && message.hasOwnProperty("binary")) {
-                                var error = $root.google.cloud.securitycenter.v1.File.verify(message.binary);
+                                var error = $root.google.cloud.securitycenter.v1.File.verify(message.binary, long + 1);
                                 if (error)
                                     return "binary." + error;
                             }
@@ -26389,13 +27377,13 @@
                                 if (!Array.isArray(message.libraries))
                                     return "libraries: array expected";
                                 for (var i = 0; i < message.libraries.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.File.verify(message.libraries[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.File.verify(message.libraries[i], long + 1);
                                     if (error)
                                         return "libraries." + error;
                                 }
                             }
                             if (message.script != null && message.hasOwnProperty("script")) {
-                                var error = $root.google.cloud.securitycenter.v1.File.verify(message.script);
+                                var error = $root.google.cloud.securitycenter.v1.File.verify(message.script, long + 1);
                                 if (error)
                                     return "script." + error;
                             }
@@ -26413,7 +27401,7 @@
                                 if (!Array.isArray(message.envVariables))
                                     return "envVariables: array expected";
                                 for (var i = 0; i < message.envVariables.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.EnvironmentVariable.verify(message.envVariables[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.EnvironmentVariable.verify(message.envVariables[i], long + 1);
                                     if (error)
                                         return "envVariables." + error;
                                 }
@@ -26438,16 +27426,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Process} Process
                          */
-                        Process.fromObject = function fromObject(object) {
+                        Process.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Process)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Process();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.binary != null) {
                                 if (typeof object.binary !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Process.binary: object expected");
-                                message.binary = $root.google.cloud.securitycenter.v1.File.fromObject(object.binary);
+                                message.binary = $root.google.cloud.securitycenter.v1.File.fromObject(object.binary, long + 1);
                             }
                             if (object.libraries) {
                                 if (!Array.isArray(object.libraries))
@@ -26456,13 +27448,13 @@
                                 for (var i = 0; i < object.libraries.length; ++i) {
                                     if (typeof object.libraries[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Process.libraries: object expected");
-                                    message.libraries[i] = $root.google.cloud.securitycenter.v1.File.fromObject(object.libraries[i]);
+                                    message.libraries[i] = $root.google.cloud.securitycenter.v1.File.fromObject(object.libraries[i], long + 1);
                                 }
                             }
                             if (object.script != null) {
                                 if (typeof object.script !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Process.script: object expected");
-                                message.script = $root.google.cloud.securitycenter.v1.File.fromObject(object.script);
+                                message.script = $root.google.cloud.securitycenter.v1.File.fromObject(object.script, long + 1);
                             }
                             if (object.args) {
                                 if (!Array.isArray(object.args))
@@ -26480,7 +27472,7 @@
                                 for (var i = 0; i < object.envVariables.length; ++i) {
                                     if (typeof object.envVariables[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Process.envVariables: object expected");
-                                    message.envVariables[i] = $root.google.cloud.securitycenter.v1.EnvironmentVariable.fromObject(object.envVariables[i]);
+                                    message.envVariables[i] = $root.google.cloud.securitycenter.v1.EnvironmentVariable.fromObject(object.envVariables[i], long + 1);
                                 }
                             }
                             if (object.envVariablesTruncated != null)
@@ -26629,7 +27621,7 @@
                         function EnvironmentVariable(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -26704,9 +27696,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EnvironmentVariable.decode = function decode(reader, length, error) {
+                        EnvironmentVariable.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.EnvironmentVariable();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -26722,7 +27718,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -26753,9 +27749,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EnvironmentVariable.verify = function verify(message) {
+                        EnvironmentVariable.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -26773,9 +27773,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.EnvironmentVariable} EnvironmentVariable
                          */
-                        EnvironmentVariable.fromObject = function fromObject(object) {
+                        EnvironmentVariable.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.EnvironmentVariable)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.EnvironmentVariable();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -26865,7 +27869,7 @@
                             this.policyDriftDetails = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -27001,9 +28005,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityPosture.decode = function decode(reader, length, error) {
+                        SecurityPosture.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SecurityPosture();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -27041,11 +28049,11 @@
                                 case 8: {
                                         if (!(message.policyDriftDetails && message.policyDriftDetails.length))
                                             message.policyDriftDetails = [];
-                                        message.policyDriftDetails.push($root.google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails.decode(reader, reader.uint32()));
+                                        message.policyDriftDetails.push($root.google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -27076,9 +28084,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityPosture.verify = function verify(message) {
+                        SecurityPosture.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -27104,7 +28116,7 @@
                                 if (!Array.isArray(message.policyDriftDetails))
                                     return "policyDriftDetails: array expected";
                                 for (var i = 0; i < message.policyDriftDetails.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails.verify(message.policyDriftDetails[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails.verify(message.policyDriftDetails[i], long + 1);
                                     if (error)
                                         return "policyDriftDetails." + error;
                                 }
@@ -27120,9 +28132,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SecurityPosture} SecurityPosture
                          */
-                        SecurityPosture.fromObject = function fromObject(object) {
+                        SecurityPosture.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SecurityPosture)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SecurityPosture();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -27145,7 +28161,7 @@
                                 for (var i = 0; i < object.policyDriftDetails.length; ++i) {
                                     if (typeof object.policyDriftDetails[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.SecurityPosture.policyDriftDetails: object expected");
-                                    message.policyDriftDetails[i] = $root.google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails.fromObject(object.policyDriftDetails[i]);
+                                    message.policyDriftDetails[i] = $root.google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails.fromObject(object.policyDriftDetails[i], long + 1);
                                 }
                             }
                             return message;
@@ -27245,7 +28261,7 @@
                             function PolicyDriftDetails(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -27330,9 +28346,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            PolicyDriftDetails.decode = function decode(reader, length, error) {
+                            PolicyDriftDetails.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -27352,7 +28372,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -27383,9 +28403,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            PolicyDriftDetails.verify = function verify(message) {
+                            PolicyDriftDetails.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.field != null && message.hasOwnProperty("field"))
                                     if (!$util.isString(message.field))
                                         return "field: string expected";
@@ -27406,9 +28430,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails} PolicyDriftDetails
                              */
-                            PolicyDriftDetails.fromObject = function fromObject(object) {
+                            PolicyDriftDetails.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.SecurityPosture.PolicyDriftDetails();
                                 if (object.field != null)
                                     message.field = String(object.field);
@@ -27500,7 +28528,7 @@
                             this.relatedFindings = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -27576,9 +28604,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ToxicCombination.decode = function decode(reader, length, error) {
+                        ToxicCombination.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ToxicCombination();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -27596,7 +28628,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -27627,9 +28659,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ToxicCombination.verify = function verify(message) {
+                        ToxicCombination.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.attackExposureScore != null && message.hasOwnProperty("attackExposureScore"))
                                 if (typeof message.attackExposureScore !== "number")
                                     return "attackExposureScore: number expected";
@@ -27651,9 +28687,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ToxicCombination} ToxicCombination
                          */
-                        ToxicCombination.fromObject = function fromObject(object) {
+                        ToxicCombination.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ToxicCombination)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ToxicCombination();
                             if (object.attackExposureScore != null)
                                 message.attackExposureScore = Number(object.attackExposureScore);
@@ -27746,7 +28786,7 @@
                         function Vulnerability(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -27841,9 +28881,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Vulnerability.decode = function decode(reader, length, error) {
+                        Vulnerability.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Vulnerability();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -27851,23 +28895,23 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.cve = $root.google.cloud.securitycenter.v1.Cve.decode(reader, reader.uint32());
+                                        message.cve = $root.google.cloud.securitycenter.v1.Cve.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.offendingPackage = $root.google.cloud.securitycenter.v1.Package.decode(reader, reader.uint32());
+                                        message.offendingPackage = $root.google.cloud.securitycenter.v1.Package.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.fixedPackage = $root.google.cloud.securitycenter.v1.Package.decode(reader, reader.uint32());
+                                        message.fixedPackage = $root.google.cloud.securitycenter.v1.Package.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
-                                        message.securityBulletin = $root.google.cloud.securitycenter.v1.SecurityBulletin.decode(reader, reader.uint32());
+                                        message.securityBulletin = $root.google.cloud.securitycenter.v1.SecurityBulletin.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -27898,26 +28942,30 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Vulnerability.verify = function verify(message) {
+                        Vulnerability.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.cve != null && message.hasOwnProperty("cve")) {
-                                var error = $root.google.cloud.securitycenter.v1.Cve.verify(message.cve);
+                                var error = $root.google.cloud.securitycenter.v1.Cve.verify(message.cve, long + 1);
                                 if (error)
                                     return "cve." + error;
                             }
                             if (message.offendingPackage != null && message.hasOwnProperty("offendingPackage")) {
-                                var error = $root.google.cloud.securitycenter.v1.Package.verify(message.offendingPackage);
+                                var error = $root.google.cloud.securitycenter.v1.Package.verify(message.offendingPackage, long + 1);
                                 if (error)
                                     return "offendingPackage." + error;
                             }
                             if (message.fixedPackage != null && message.hasOwnProperty("fixedPackage")) {
-                                var error = $root.google.cloud.securitycenter.v1.Package.verify(message.fixedPackage);
+                                var error = $root.google.cloud.securitycenter.v1.Package.verify(message.fixedPackage, long + 1);
                                 if (error)
                                     return "fixedPackage." + error;
                             }
                             if (message.securityBulletin != null && message.hasOwnProperty("securityBulletin")) {
-                                var error = $root.google.cloud.securitycenter.v1.SecurityBulletin.verify(message.securityBulletin);
+                                var error = $root.google.cloud.securitycenter.v1.SecurityBulletin.verify(message.securityBulletin, long + 1);
                                 if (error)
                                     return "securityBulletin." + error;
                             }
@@ -27932,29 +28980,33 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Vulnerability} Vulnerability
                          */
-                        Vulnerability.fromObject = function fromObject(object) {
+                        Vulnerability.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Vulnerability)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Vulnerability();
                             if (object.cve != null) {
                                 if (typeof object.cve !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Vulnerability.cve: object expected");
-                                message.cve = $root.google.cloud.securitycenter.v1.Cve.fromObject(object.cve);
+                                message.cve = $root.google.cloud.securitycenter.v1.Cve.fromObject(object.cve, long + 1);
                             }
                             if (object.offendingPackage != null) {
                                 if (typeof object.offendingPackage !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Vulnerability.offendingPackage: object expected");
-                                message.offendingPackage = $root.google.cloud.securitycenter.v1.Package.fromObject(object.offendingPackage);
+                                message.offendingPackage = $root.google.cloud.securitycenter.v1.Package.fromObject(object.offendingPackage, long + 1);
                             }
                             if (object.fixedPackage != null) {
                                 if (typeof object.fixedPackage !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Vulnerability.fixedPackage: object expected");
-                                message.fixedPackage = $root.google.cloud.securitycenter.v1.Package.fromObject(object.fixedPackage);
+                                message.fixedPackage = $root.google.cloud.securitycenter.v1.Package.fromObject(object.fixedPackage, long + 1);
                             }
                             if (object.securityBulletin != null) {
                                 if (typeof object.securityBulletin !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Vulnerability.securityBulletin: object expected");
-                                message.securityBulletin = $root.google.cloud.securitycenter.v1.SecurityBulletin.fromObject(object.securityBulletin);
+                                message.securityBulletin = $root.google.cloud.securitycenter.v1.SecurityBulletin.fromObject(object.securityBulletin, long + 1);
                             }
                             return message;
                         };
@@ -28047,7 +29099,7 @@
                             this.references = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -28193,9 +29245,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Cve.decode = function decode(reader, length, error) {
+                        Cve.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Cve();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -28209,11 +29265,11 @@
                                 case 2: {
                                         if (!(message.references && message.references.length))
                                             message.references = [];
-                                        message.references.push($root.google.cloud.securitycenter.v1.Reference.decode(reader, reader.uint32()));
+                                        message.references.push($root.google.cloud.securitycenter.v1.Reference.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
-                                        message.cvssv3 = $root.google.cloud.securitycenter.v1.Cvssv3.decode(reader, reader.uint32());
+                                        message.cvssv3 = $root.google.cloud.securitycenter.v1.Cvssv3.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
@@ -28237,11 +29293,11 @@
                                         break;
                                     }
                                 case 9: {
-                                        message.exploitReleaseDate = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.exploitReleaseDate = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -28272,9 +29328,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Cve.verify = function verify(message) {
+                        Cve.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.id != null && message.hasOwnProperty("id"))
                                 if (!$util.isString(message.id))
                                     return "id: string expected";
@@ -28282,13 +29342,13 @@
                                 if (!Array.isArray(message.references))
                                     return "references: array expected";
                                 for (var i = 0; i < message.references.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Reference.verify(message.references[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Reference.verify(message.references[i], long + 1);
                                     if (error)
                                         return "references." + error;
                                 }
                             }
                             if (message.cvssv3 != null && message.hasOwnProperty("cvssv3")) {
-                                var error = $root.google.cloud.securitycenter.v1.Cvssv3.verify(message.cvssv3);
+                                var error = $root.google.cloud.securitycenter.v1.Cvssv3.verify(message.cvssv3, long + 1);
                                 if (error)
                                     return "cvssv3." + error;
                             }
@@ -28325,7 +29385,7 @@
                                 if (typeof message.zeroDay !== "boolean")
                                     return "zeroDay: boolean expected";
                             if (message.exploitReleaseDate != null && message.hasOwnProperty("exploitReleaseDate")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.exploitReleaseDate);
+                                var error = $root.google.protobuf.Timestamp.verify(message.exploitReleaseDate, long + 1);
                                 if (error)
                                     return "exploitReleaseDate." + error;
                             }
@@ -28340,9 +29400,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Cve} Cve
                          */
-                        Cve.fromObject = function fromObject(object) {
+                        Cve.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Cve)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Cve();
                             if (object.id != null)
                                 message.id = String(object.id);
@@ -28353,13 +29417,13 @@
                                 for (var i = 0; i < object.references.length; ++i) {
                                     if (typeof object.references[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Cve.references: object expected");
-                                    message.references[i] = $root.google.cloud.securitycenter.v1.Reference.fromObject(object.references[i]);
+                                    message.references[i] = $root.google.cloud.securitycenter.v1.Reference.fromObject(object.references[i], long + 1);
                                 }
                             }
                             if (object.cvssv3 != null) {
                                 if (typeof object.cvssv3 !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Cve.cvssv3: object expected");
-                                message.cvssv3 = $root.google.cloud.securitycenter.v1.Cvssv3.fromObject(object.cvssv3);
+                                message.cvssv3 = $root.google.cloud.securitycenter.v1.Cvssv3.fromObject(object.cvssv3, long + 1);
                             }
                             if (object.upstreamFixAvailable != null)
                                 message.upstreamFixAvailable = Boolean(object.upstreamFixAvailable);
@@ -28430,7 +29494,7 @@
                             if (object.exploitReleaseDate != null) {
                                 if (typeof object.exploitReleaseDate !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Cve.exploitReleaseDate: object expected");
-                                message.exploitReleaseDate = $root.google.protobuf.Timestamp.fromObject(object.exploitReleaseDate);
+                                message.exploitReleaseDate = $root.google.protobuf.Timestamp.fromObject(object.exploitReleaseDate, long + 1);
                             }
                             return message;
                         };
@@ -28576,7 +29640,7 @@
                         function Reference(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -28651,9 +29715,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Reference.decode = function decode(reader, length, error) {
+                        Reference.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Reference();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -28669,7 +29737,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -28700,9 +29768,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Reference.verify = function verify(message) {
+                        Reference.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.source != null && message.hasOwnProperty("source"))
                                 if (!$util.isString(message.source))
                                     return "source: string expected";
@@ -28720,9 +29792,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Reference} Reference
                          */
-                        Reference.fromObject = function fromObject(object) {
+                        Reference.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Reference)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Reference();
                             if (object.source != null)
                                 message.source = String(object.source);
@@ -28812,7 +29888,7 @@
                         function Cvssv3(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -28957,9 +30033,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Cvssv3.decode = function decode(reader, length, error) {
+                        Cvssv3.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Cvssv3();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -29003,7 +30083,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -29034,9 +30114,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Cvssv3.verify = function verify(message) {
+                        Cvssv3.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.baseScore != null && message.hasOwnProperty("baseScore"))
                                 if (typeof message.baseScore !== "number")
                                     return "baseScore: number expected";
@@ -29129,9 +30213,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Cvssv3} Cvssv3
                          */
-                        Cvssv3.fromObject = function fromObject(object) {
+                        Cvssv3.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Cvssv3)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Cvssv3();
                             if (object.baseScore != null)
                                 message.baseScore = Number(object.baseScore);
@@ -29523,7 +30611,7 @@
                         function Package(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -29618,9 +30706,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Package.decode = function decode(reader, length, error) {
+                        Package.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Package();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -29644,7 +30736,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -29675,9 +30767,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Package.verify = function verify(message) {
+                        Package.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.packageName != null && message.hasOwnProperty("packageName"))
                                 if (!$util.isString(message.packageName))
                                     return "packageName: string expected";
@@ -29701,9 +30797,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Package} Package
                          */
-                        Package.fromObject = function fromObject(object) {
+                        Package.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Package)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Package();
                             if (object.packageName != null)
                                 message.packageName = String(object.packageName);
@@ -29797,7 +30897,7 @@
                         function SecurityBulletin(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -29882,9 +30982,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityBulletin.decode = function decode(reader, length, error) {
+                        SecurityBulletin.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SecurityBulletin();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -29896,7 +31000,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.submissionTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.submissionTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -29904,7 +31008,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -29935,14 +31039,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityBulletin.verify = function verify(message) {
+                        SecurityBulletin.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.bulletinId != null && message.hasOwnProperty("bulletinId"))
                                 if (!$util.isString(message.bulletinId))
                                     return "bulletinId: string expected";
                             if (message.submissionTime != null && message.hasOwnProperty("submissionTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.submissionTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.submissionTime, long + 1);
                                 if (error)
                                     return "submissionTime." + error;
                             }
@@ -29960,16 +31068,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SecurityBulletin} SecurityBulletin
                          */
-                        SecurityBulletin.fromObject = function fromObject(object) {
+                        SecurityBulletin.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SecurityBulletin)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SecurityBulletin();
                             if (object.bulletinId != null)
                                 message.bulletinId = String(object.bulletinId);
                             if (object.submissionTime != null) {
                                 if (typeof object.submissionTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.SecurityBulletin.submissionTime: object expected");
-                                message.submissionTime = $root.google.protobuf.Timestamp.fromObject(object.submissionTime);
+                                message.submissionTime = $root.google.protobuf.Timestamp.fromObject(object.submissionTime, long + 1);
                             }
                             if (object.suggestedUpgradeVersion != null)
                                 message.suggestedUpgradeVersion = String(object.suggestedUpgradeVersion);
@@ -30060,7 +31172,7 @@
                         function MuteConfig(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -30205,9 +31317,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        MuteConfig.decode = function decode(reader, length, error) {
+                        MuteConfig.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.MuteConfig();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -30231,11 +31347,11 @@
                                         break;
                                     }
                                 case 5: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -30247,11 +31363,11 @@
                                         break;
                                     }
                                 case 9: {
-                                        message.expiryTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.expiryTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -30282,9 +31398,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        MuteConfig.verify = function verify(message) {
+                        MuteConfig.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -30298,12 +31418,12 @@
                                 if (!$util.isString(message.filter))
                                     return "filter: string expected";
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -30320,7 +31440,7 @@
                                     break;
                                 }
                             if (message.expiryTime != null && message.hasOwnProperty("expiryTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.expiryTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.expiryTime, long + 1);
                                 if (error)
                                     return "expiryTime." + error;
                             }
@@ -30335,9 +31455,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.MuteConfig} MuteConfig
                          */
-                        MuteConfig.fromObject = function fromObject(object) {
+                        MuteConfig.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.MuteConfig)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.MuteConfig();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -30350,12 +31474,12 @@
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.MuteConfig.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.MuteConfig.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.mostRecentEditor != null)
                                 message.mostRecentEditor = String(object.mostRecentEditor);
@@ -30382,7 +31506,7 @@
                             if (object.expiryTime != null) {
                                 if (typeof object.expiryTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.MuteConfig.expiryTime: object expected");
-                                message.expiryTime = $root.google.protobuf.Timestamp.fromObject(object.expiryTime);
+                                message.expiryTime = $root.google.protobuf.Timestamp.fromObject(object.expiryTime, long + 1);
                             }
                             return message;
                         };
@@ -30501,7 +31625,7 @@
                         function NotificationConfig(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -30620,9 +31744,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        NotificationConfig.decode = function decode(reader, length, error) {
+                        NotificationConfig.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.NotificationConfig();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -30646,11 +31774,11 @@
                                         break;
                                     }
                                 case 5: {
-                                        message.streamingConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig.decode(reader, reader.uint32());
+                                        message.streamingConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -30681,9 +31809,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        NotificationConfig.verify = function verify(message) {
+                        NotificationConfig.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
@@ -30700,7 +31832,7 @@
                             if (message.streamingConfig != null && message.hasOwnProperty("streamingConfig")) {
                                 properties.notifyConfig = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig.verify(message.streamingConfig);
+                                    var error = $root.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig.verify(message.streamingConfig, long + 1);
                                     if (error)
                                         return "streamingConfig." + error;
                                 }
@@ -30716,9 +31848,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.NotificationConfig} NotificationConfig
                          */
-                        NotificationConfig.fromObject = function fromObject(object) {
+                        NotificationConfig.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.NotificationConfig)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.NotificationConfig();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -30731,7 +31867,7 @@
                             if (object.streamingConfig != null) {
                                 if (typeof object.streamingConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.NotificationConfig.streamingConfig: object expected");
-                                message.streamingConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig.fromObject(object.streamingConfig);
+                                message.streamingConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig.fromObject(object.streamingConfig, long + 1);
                             }
                             return message;
                         };
@@ -30817,7 +31953,7 @@
                             function StreamingConfig(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -30882,9 +32018,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            StreamingConfig.decode = function decode(reader, length, error) {
+                            StreamingConfig.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -30896,7 +32036,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -30927,9 +32067,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            StreamingConfig.verify = function verify(message) {
+                            StreamingConfig.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.filter != null && message.hasOwnProperty("filter"))
                                     if (!$util.isString(message.filter))
                                         return "filter: string expected";
@@ -30944,9 +32088,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig} StreamingConfig
                              */
-                            StreamingConfig.fromObject = function fromObject(object) {
+                            StreamingConfig.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.NotificationConfig.StreamingConfig();
                                 if (object.filter != null)
                                     message.filter = String(object.filter);
@@ -31027,7 +32175,7 @@
                         function NotificationMessage(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -31126,9 +32274,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        NotificationMessage.decode = function decode(reader, length, error) {
+                        NotificationMessage.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.NotificationMessage();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -31140,15 +32292,15 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.resource = $root.google.cloud.securitycenter.v1.Resource.decode(reader, reader.uint32());
+                                        message.resource = $root.google.cloud.securitycenter.v1.Resource.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -31179,9 +32331,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        NotificationMessage.verify = function verify(message) {
+                        NotificationMessage.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.notificationConfigName != null && message.hasOwnProperty("notificationConfigName"))
                                 if (!$util.isString(message.notificationConfigName))
@@ -31189,13 +32345,13 @@
                             if (message.finding != null && message.hasOwnProperty("finding")) {
                                 properties.event = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding);
+                                    var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding, long + 1);
                                     if (error)
                                         return "finding." + error;
                                 }
                             }
                             if (message.resource != null && message.hasOwnProperty("resource")) {
-                                var error = $root.google.cloud.securitycenter.v1.Resource.verify(message.resource);
+                                var error = $root.google.cloud.securitycenter.v1.Resource.verify(message.resource, long + 1);
                                 if (error)
                                     return "resource." + error;
                             }
@@ -31210,21 +32366,25 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.NotificationMessage} NotificationMessage
                          */
-                        NotificationMessage.fromObject = function fromObject(object) {
+                        NotificationMessage.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.NotificationMessage)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.NotificationMessage();
                             if (object.notificationConfigName != null)
                                 message.notificationConfigName = String(object.notificationConfigName);
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.NotificationMessage.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding, long + 1);
                             }
                             if (object.resource != null) {
                                 if (typeof object.resource !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.NotificationMessage.resource: object expected");
-                                message.resource = $root.google.cloud.securitycenter.v1.Resource.fromObject(object.resource);
+                                message.resource = $root.google.cloud.securitycenter.v1.Resource.fromObject(object.resource, long + 1);
                             }
                             return message;
                         };
@@ -31323,7 +32483,7 @@
                             this.folders = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -31553,9 +32713,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Resource.decode = function decode(reader, length, error) {
+                        Resource.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Resource();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -31593,7 +32757,7 @@
                                 case 7: {
                                         if (!(message.folders && message.folders.length))
                                             message.folders = [];
-                                        message.folders.push($root.google.cloud.securitycenter.v1.Folder.decode(reader, reader.uint32()));
+                                        message.folders.push($root.google.cloud.securitycenter.v1.Folder.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 9: {
@@ -31613,15 +32777,15 @@
                                         break;
                                     }
                                 case 16: {
-                                        message.awsMetadata = $root.google.cloud.securitycenter.v1.AwsMetadata.decode(reader, reader.uint32());
+                                        message.awsMetadata = $root.google.cloud.securitycenter.v1.AwsMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 17: {
-                                        message.azureMetadata = $root.google.cloud.securitycenter.v1.AzureMetadata.decode(reader, reader.uint32());
+                                        message.azureMetadata = $root.google.cloud.securitycenter.v1.AzureMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 18: {
-                                        message.resourcePath = $root.google.cloud.securitycenter.v1.ResourcePath.decode(reader, reader.uint32());
+                                        message.resourcePath = $root.google.cloud.securitycenter.v1.ResourcePath.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 19: {
@@ -31629,7 +32793,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -31660,9 +32824,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Resource.verify = function verify(message) {
+                        Resource.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
@@ -31689,7 +32857,7 @@
                                 if (!Array.isArray(message.folders))
                                     return "folders: array expected";
                                 for (var i = 0; i < message.folders.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Folder.verify(message.folders[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Folder.verify(message.folders[i], long + 1);
                                     if (error)
                                         return "folders." + error;
                                 }
@@ -31716,7 +32884,7 @@
                             if (message.awsMetadata != null && message.hasOwnProperty("awsMetadata")) {
                                 properties.cloudProviderMetadata = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v1.AwsMetadata.verify(message.awsMetadata);
+                                    var error = $root.google.cloud.securitycenter.v1.AwsMetadata.verify(message.awsMetadata, long + 1);
                                     if (error)
                                         return "awsMetadata." + error;
                                 }
@@ -31726,13 +32894,13 @@
                                     return "cloudProviderMetadata: multiple values";
                                 properties.cloudProviderMetadata = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v1.AzureMetadata.verify(message.azureMetadata);
+                                    var error = $root.google.cloud.securitycenter.v1.AzureMetadata.verify(message.azureMetadata, long + 1);
                                     if (error)
                                         return "azureMetadata." + error;
                                 }
                             }
                             if (message.resourcePath != null && message.hasOwnProperty("resourcePath")) {
-                                var error = $root.google.cloud.securitycenter.v1.ResourcePath.verify(message.resourcePath);
+                                var error = $root.google.cloud.securitycenter.v1.ResourcePath.verify(message.resourcePath, long + 1);
                                 if (error)
                                     return "resourcePath." + error;
                             }
@@ -31750,9 +32918,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Resource} Resource
                          */
-                        Resource.fromObject = function fromObject(object) {
+                        Resource.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Resource)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Resource();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -31775,7 +32947,7 @@
                                 for (var i = 0; i < object.folders.length; ++i) {
                                     if (typeof object.folders[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Resource.folders: object expected");
-                                    message.folders[i] = $root.google.cloud.securitycenter.v1.Folder.fromObject(object.folders[i]);
+                                    message.folders[i] = $root.google.cloud.securitycenter.v1.Folder.fromObject(object.folders[i], long + 1);
                                 }
                             }
                             switch (object.cloudProvider) {
@@ -31811,17 +32983,17 @@
                             if (object.awsMetadata != null) {
                                 if (typeof object.awsMetadata !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Resource.awsMetadata: object expected");
-                                message.awsMetadata = $root.google.cloud.securitycenter.v1.AwsMetadata.fromObject(object.awsMetadata);
+                                message.awsMetadata = $root.google.cloud.securitycenter.v1.AwsMetadata.fromObject(object.awsMetadata, long + 1);
                             }
                             if (object.azureMetadata != null) {
                                 if (typeof object.azureMetadata !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Resource.azureMetadata: object expected");
-                                message.azureMetadata = $root.google.cloud.securitycenter.v1.AzureMetadata.fromObject(object.azureMetadata);
+                                message.azureMetadata = $root.google.cloud.securitycenter.v1.AzureMetadata.fromObject(object.azureMetadata, long + 1);
                             }
                             if (object.resourcePath != null) {
                                 if (typeof object.resourcePath !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Resource.resourcePath: object expected");
-                                message.resourcePath = $root.google.cloud.securitycenter.v1.ResourcePath.fromObject(object.resourcePath);
+                                message.resourcePath = $root.google.cloud.securitycenter.v1.ResourcePath.fromObject(object.resourcePath, long + 1);
                             }
                             if (object.resourcePathString != null)
                                 message.resourcePathString = String(object.resourcePathString);
@@ -31972,7 +33144,7 @@
                             this.organizationalUnits = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -32058,9 +33230,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AwsMetadata.decode = function decode(reader, length, error) {
+                        AwsMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AwsMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -32068,21 +33244,21 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 2: {
-                                        message.organization = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization.decode(reader, reader.uint32());
+                                        message.organization = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.organizationalUnits && message.organizationalUnits.length))
                                             message.organizationalUnits = [];
-                                        message.organizationalUnits.push($root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit.decode(reader, reader.uint32()));
+                                        message.organizationalUnits.push($root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 4: {
-                                        message.account = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsAccount.decode(reader, reader.uint32());
+                                        message.account = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsAccount.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -32113,11 +33289,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AwsMetadata.verify = function verify(message) {
+                        AwsMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.organization != null && message.hasOwnProperty("organization")) {
-                                var error = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization.verify(message.organization);
+                                var error = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization.verify(message.organization, long + 1);
                                 if (error)
                                     return "organization." + error;
                             }
@@ -32125,13 +33305,13 @@
                                 if (!Array.isArray(message.organizationalUnits))
                                     return "organizationalUnits: array expected";
                                 for (var i = 0; i < message.organizationalUnits.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit.verify(message.organizationalUnits[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit.verify(message.organizationalUnits[i], long + 1);
                                     if (error)
                                         return "organizationalUnits." + error;
                                 }
                             }
                             if (message.account != null && message.hasOwnProperty("account")) {
-                                var error = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsAccount.verify(message.account);
+                                var error = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsAccount.verify(message.account, long + 1);
                                 if (error)
                                     return "account." + error;
                             }
@@ -32146,14 +33326,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.AwsMetadata} AwsMetadata
                          */
-                        AwsMetadata.fromObject = function fromObject(object) {
+                        AwsMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.AwsMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.AwsMetadata();
                             if (object.organization != null) {
                                 if (typeof object.organization !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.AwsMetadata.organization: object expected");
-                                message.organization = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization.fromObject(object.organization);
+                                message.organization = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization.fromObject(object.organization, long + 1);
                             }
                             if (object.organizationalUnits) {
                                 if (!Array.isArray(object.organizationalUnits))
@@ -32162,13 +33346,13 @@
                                 for (var i = 0; i < object.organizationalUnits.length; ++i) {
                                     if (typeof object.organizationalUnits[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.AwsMetadata.organizationalUnits: object expected");
-                                    message.organizationalUnits[i] = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit.fromObject(object.organizationalUnits[i]);
+                                    message.organizationalUnits[i] = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit.fromObject(object.organizationalUnits[i], long + 1);
                                 }
                             }
                             if (object.account != null) {
                                 if (typeof object.account !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.AwsMetadata.account: object expected");
-                                message.account = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsAccount.fromObject(object.account);
+                                message.account = $root.google.cloud.securitycenter.v1.AwsMetadata.AwsAccount.fromObject(object.account, long + 1);
                             }
                             return message;
                         };
@@ -32250,7 +33434,7 @@
                             function AwsOrganization(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -32315,9 +33499,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AwsOrganization.decode = function decode(reader, length, error) {
+                            AwsOrganization.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -32329,7 +33517,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -32360,9 +33548,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AwsOrganization.verify = function verify(message) {
+                            AwsOrganization.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -32377,9 +33569,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization} AwsOrganization
                              */
-                            AwsOrganization.fromObject = function fromObject(object) {
+                            AwsOrganization.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganization();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -32456,7 +33652,7 @@
                             function AwsOrganizationalUnit(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -32531,9 +33727,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AwsOrganizationalUnit.decode = function decode(reader, length, error) {
+                            AwsOrganizationalUnit.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -32549,7 +33749,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -32580,9 +33780,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AwsOrganizationalUnit.verify = function verify(message) {
+                            AwsOrganizationalUnit.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -32600,9 +33804,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit} AwsOrganizationalUnit
                              */
-                            AwsOrganizationalUnit.fromObject = function fromObject(object) {
+                            AwsOrganizationalUnit.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.AwsMetadata.AwsOrganizationalUnit();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -32685,7 +33893,7 @@
                             function AwsAccount(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -32760,9 +33968,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AwsAccount.decode = function decode(reader, length, error) {
+                            AwsAccount.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AwsMetadata.AwsAccount();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -32778,7 +33990,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -32809,9 +34021,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AwsAccount.verify = function verify(message) {
+                            AwsAccount.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -32829,9 +34045,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.AwsMetadata.AwsAccount} AwsAccount
                              */
-                            AwsAccount.fromObject = function fromObject(object) {
+                            AwsAccount.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.AwsMetadata.AwsAccount)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.AwsMetadata.AwsAccount();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -32919,7 +34139,7 @@
                             this.managementGroups = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -33005,9 +34225,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AzureMetadata.decode = function decode(reader, length, error) {
+                        AzureMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AzureMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -33017,19 +34241,19 @@
                                 case 4: {
                                         if (!(message.managementGroups && message.managementGroups.length))
                                             message.managementGroups = [];
-                                        message.managementGroups.push($root.google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup.decode(reader, reader.uint32()));
+                                        message.managementGroups.push($root.google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 5: {
-                                        message.subscription = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription.decode(reader, reader.uint32());
+                                        message.subscription = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
-                                        message.resourceGroup = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup.decode(reader, reader.uint32());
+                                        message.resourceGroup = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -33060,25 +34284,29 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AzureMetadata.verify = function verify(message) {
+                        AzureMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.managementGroups != null && message.hasOwnProperty("managementGroups")) {
                                 if (!Array.isArray(message.managementGroups))
                                     return "managementGroups: array expected";
                                 for (var i = 0; i < message.managementGroups.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup.verify(message.managementGroups[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup.verify(message.managementGroups[i], long + 1);
                                     if (error)
                                         return "managementGroups." + error;
                                 }
                             }
                             if (message.subscription != null && message.hasOwnProperty("subscription")) {
-                                var error = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription.verify(message.subscription);
+                                var error = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription.verify(message.subscription, long + 1);
                                 if (error)
                                     return "subscription." + error;
                             }
                             if (message.resourceGroup != null && message.hasOwnProperty("resourceGroup")) {
-                                var error = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup.verify(message.resourceGroup);
+                                var error = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup.verify(message.resourceGroup, long + 1);
                                 if (error)
                                     return "resourceGroup." + error;
                             }
@@ -33093,9 +34321,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.AzureMetadata} AzureMetadata
                          */
-                        AzureMetadata.fromObject = function fromObject(object) {
+                        AzureMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.AzureMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.AzureMetadata();
                             if (object.managementGroups) {
                                 if (!Array.isArray(object.managementGroups))
@@ -33104,18 +34336,18 @@
                                 for (var i = 0; i < object.managementGroups.length; ++i) {
                                     if (typeof object.managementGroups[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.AzureMetadata.managementGroups: object expected");
-                                    message.managementGroups[i] = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup.fromObject(object.managementGroups[i]);
+                                    message.managementGroups[i] = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup.fromObject(object.managementGroups[i], long + 1);
                                 }
                             }
                             if (object.subscription != null) {
                                 if (typeof object.subscription !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.AzureMetadata.subscription: object expected");
-                                message.subscription = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription.fromObject(object.subscription);
+                                message.subscription = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription.fromObject(object.subscription, long + 1);
                             }
                             if (object.resourceGroup != null) {
                                 if (typeof object.resourceGroup !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.AzureMetadata.resourceGroup: object expected");
-                                message.resourceGroup = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup.fromObject(object.resourceGroup);
+                                message.resourceGroup = $root.google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup.fromObject(object.resourceGroup, long + 1);
                             }
                             return message;
                         };
@@ -33198,7 +34430,7 @@
                             function AzureManagementGroup(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -33273,9 +34505,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AzureManagementGroup.decode = function decode(reader, length, error) {
+                            AzureManagementGroup.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -33291,7 +34527,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -33322,9 +34558,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AzureManagementGroup.verify = function verify(message) {
+                            AzureManagementGroup.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -33342,9 +34582,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup} AzureManagementGroup
                              */
-                            AzureManagementGroup.fromObject = function fromObject(object) {
+                            AzureManagementGroup.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.AzureMetadata.AzureManagementGroup();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -33427,7 +34671,7 @@
                             function AzureSubscription(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -33502,9 +34746,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AzureSubscription.decode = function decode(reader, length, error) {
+                            AzureSubscription.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -33520,7 +34768,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -33551,9 +34799,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AzureSubscription.verify = function verify(message) {
+                            AzureSubscription.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -33571,9 +34823,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription} AzureSubscription
                              */
-                            AzureSubscription.fromObject = function fromObject(object) {
+                            AzureSubscription.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.AzureMetadata.AzureSubscription();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -33655,7 +34911,7 @@
                             function AzureResourceGroup(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -33720,9 +34976,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AzureResourceGroup.decode = function decode(reader, length, error) {
+                            AzureResourceGroup.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -33734,7 +34994,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -33765,9 +35025,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AzureResourceGroup.verify = function verify(message) {
+                            AzureResourceGroup.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.name != null && message.hasOwnProperty("name"))
                                     if (!$util.isString(message.name))
                                         return "name: string expected";
@@ -33782,9 +35046,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup} AzureResourceGroup
                              */
-                            AzureResourceGroup.fromObject = function fromObject(object) {
+                            AzureResourceGroup.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.AzureMetadata.AzureResourceGroup();
                                 if (object.name != null)
                                     message.name = String(object.name);
@@ -33864,7 +35132,7 @@
                             this.nodes = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -33930,9 +35198,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResourcePath.decode = function decode(reader, length, error) {
+                        ResourcePath.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ResourcePath();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -33942,11 +35214,11 @@
                                 case 1: {
                                         if (!(message.nodes && message.nodes.length))
                                             message.nodes = [];
-                                        message.nodes.push($root.google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode.decode(reader, reader.uint32()));
+                                        message.nodes.push($root.google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -33977,14 +35249,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResourcePath.verify = function verify(message) {
+                        ResourcePath.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.nodes != null && message.hasOwnProperty("nodes")) {
                                 if (!Array.isArray(message.nodes))
                                     return "nodes: array expected";
                                 for (var i = 0; i < message.nodes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode.verify(message.nodes[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode.verify(message.nodes[i], long + 1);
                                     if (error)
                                         return "nodes." + error;
                                 }
@@ -34000,9 +35276,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ResourcePath} ResourcePath
                          */
-                        ResourcePath.fromObject = function fromObject(object) {
+                        ResourcePath.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ResourcePath)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ResourcePath();
                             if (object.nodes) {
                                 if (!Array.isArray(object.nodes))
@@ -34011,7 +35291,7 @@
                                 for (var i = 0; i < object.nodes.length; ++i) {
                                     if (typeof object.nodes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ResourcePath.nodes: object expected");
-                                    message.nodes[i] = $root.google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode.fromObject(object.nodes[i]);
+                                    message.nodes[i] = $root.google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode.fromObject(object.nodes[i], long + 1);
                                 }
                             }
                             return message;
@@ -34118,7 +35398,7 @@
                             function ResourcePathNode(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -34203,9 +35483,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ResourcePathNode.decode = function decode(reader, length, error) {
+                            ResourcePathNode.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -34225,7 +35509,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -34256,9 +35540,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ResourcePathNode.verify = function verify(message) {
+                            ResourcePathNode.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.nodeType != null && message.hasOwnProperty("nodeType"))
                                     switch (message.nodeType) {
                                     default:
@@ -34292,9 +35580,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode} ResourcePathNode
                              */
-                            ResourcePathNode.fromObject = function fromObject(object) {
+                            ResourcePathNode.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.ResourcePath.ResourcePathNode();
                                 switch (object.nodeType) {
                                 default:
@@ -34432,7 +35724,7 @@
                         function OrganizationSettings(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -34517,9 +35809,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        OrganizationSettings.decode = function decode(reader, length, error) {
+                        OrganizationSettings.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.OrganizationSettings();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -34535,11 +35831,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig.decode(reader, reader.uint32());
+                                        message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -34570,9 +35866,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        OrganizationSettings.verify = function verify(message) {
+                        OrganizationSettings.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -34580,7 +35880,7 @@
                                 if (typeof message.enableAssetDiscovery !== "boolean")
                                     return "enableAssetDiscovery: boolean expected";
                             if (message.assetDiscoveryConfig != null && message.hasOwnProperty("assetDiscoveryConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig.verify(message.assetDiscoveryConfig);
+                                var error = $root.google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig.verify(message.assetDiscoveryConfig, long + 1);
                                 if (error)
                                     return "assetDiscoveryConfig." + error;
                             }
@@ -34595,9 +35895,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.OrganizationSettings} OrganizationSettings
                          */
-                        OrganizationSettings.fromObject = function fromObject(object) {
+                        OrganizationSettings.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.OrganizationSettings)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.OrganizationSettings();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -34606,7 +35910,7 @@
                             if (object.assetDiscoveryConfig != null) {
                                 if (typeof object.assetDiscoveryConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.OrganizationSettings.assetDiscoveryConfig: object expected");
-                                message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig.fromObject(object.assetDiscoveryConfig);
+                                message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig.fromObject(object.assetDiscoveryConfig, long + 1);
                             }
                             return message;
                         };
@@ -34688,7 +35992,7 @@
                                 this.folderIds = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -34775,9 +36079,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AssetDiscoveryConfig.decode = function decode(reader, length, error) {
+                            AssetDiscoveryConfig.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -34801,7 +36109,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -34832,9 +36140,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AssetDiscoveryConfig.verify = function verify(message) {
+                            AssetDiscoveryConfig.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.projectIds != null && message.hasOwnProperty("projectIds")) {
                                     if (!Array.isArray(message.projectIds))
                                         return "projectIds: array expected";
@@ -34869,9 +36181,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig} AssetDiscoveryConfig
                              */
-                            AssetDiscoveryConfig.fromObject = function fromObject(object) {
+                            AssetDiscoveryConfig.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.OrganizationSettings.AssetDiscoveryConfig();
                                 if (object.projectIds) {
                                     if (!Array.isArray(object.projectIds))
@@ -35024,7 +36340,7 @@
                             this.resourceLabelsSelector = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -35191,9 +36507,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResourceValueConfig.decode = function decode(reader, length, error) {
+                        ResourceValueConfig.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ResourceValueConfig(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -35238,10 +36558,12 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.resourceLabelsSelector, key);
                                         message.resourceLabelsSelector[key] = value;
                                         break;
                                     }
@@ -35250,11 +36572,11 @@
                                         break;
                                     }
                                 case 8: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
@@ -35262,11 +36584,11 @@
                                         break;
                                     }
                                 case 11: {
-                                        message.sensitiveDataProtectionMapping = $root.google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping.decode(reader, reader.uint32());
+                                        message.sensitiveDataProtectionMapping = $root.google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -35297,9 +36619,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResourceValueConfig.verify = function verify(message) {
+                        ResourceValueConfig.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -35339,12 +36665,12 @@
                                 if (!$util.isString(message.description))
                                     return "description: string expected";
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -35359,7 +36685,7 @@
                                     break;
                                 }
                             if (message.sensitiveDataProtectionMapping != null && message.hasOwnProperty("sensitiveDataProtectionMapping")) {
-                                var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping.verify(message.sensitiveDataProtectionMapping);
+                                var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping.verify(message.sensitiveDataProtectionMapping, long + 1);
                                 if (error)
                                     return "sensitiveDataProtectionMapping." + error;
                             }
@@ -35374,9 +36700,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ResourceValueConfig} ResourceValueConfig
                          */
-                        ResourceValueConfig.fromObject = function fromObject(object) {
+                        ResourceValueConfig.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ResourceValueConfig)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ResourceValueConfig();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -35423,20 +36753,23 @@
                                 if (typeof object.resourceLabelsSelector !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ResourceValueConfig.resourceLabelsSelector: object expected");
                                 message.resourceLabelsSelector = {};
-                                for (var keys = Object.keys(object.resourceLabelsSelector), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.resourceLabelsSelector), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.resourceLabelsSelector, keys[i]);
                                     message.resourceLabelsSelector[keys[i]] = String(object.resourceLabelsSelector[keys[i]]);
+                                }
                             }
                             if (object.description != null)
                                 message.description = String(object.description);
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ResourceValueConfig.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ResourceValueConfig.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             switch (object.cloudProvider) {
                             default:
@@ -35465,7 +36798,7 @@
                             if (object.sensitiveDataProtectionMapping != null) {
                                 if (typeof object.sensitiveDataProtectionMapping !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ResourceValueConfig.sensitiveDataProtectionMapping: object expected");
-                                message.sensitiveDataProtectionMapping = $root.google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping.fromObject(object.sensitiveDataProtectionMapping);
+                                message.sensitiveDataProtectionMapping = $root.google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping.fromObject(object.sensitiveDataProtectionMapping, long + 1);
                             }
                             return message;
                         };
@@ -35514,8 +36847,11 @@
                             var keys2;
                             if (message.resourceLabelsSelector && (keys2 = Object.keys(message.resourceLabelsSelector)).length) {
                                 object.resourceLabelsSelector = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.resourceLabelsSelector, keys2[j]);
                                     object.resourceLabelsSelector[keys2[j]] = message.resourceLabelsSelector[keys2[j]];
+                                }
                             }
                             if (message.description != null && message.hasOwnProperty("description"))
                                 object.description = message.description;
@@ -35577,7 +36913,7 @@
                             function SensitiveDataProtectionMapping(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -35652,9 +36988,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            SensitiveDataProtectionMapping.decode = function decode(reader, length, error) {
+                            SensitiveDataProtectionMapping.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -35670,7 +37010,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -35701,9 +37041,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            SensitiveDataProtectionMapping.verify = function verify(message) {
+                            SensitiveDataProtectionMapping.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.highSensitivityMapping != null && message.hasOwnProperty("highSensitivityMapping"))
                                     switch (message.highSensitivityMapping) {
                                     default:
@@ -35737,9 +37081,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping} SensitiveDataProtectionMapping
                              */
-                            SensitiveDataProtectionMapping.fromObject = function fromObject(object) {
+                            SensitiveDataProtectionMapping.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.ResourceValueConfig.SensitiveDataProtectionMapping();
                                 switch (object.highSensitivityMapping) {
                                 default:
@@ -35897,7 +37245,7 @@
                         function RunAssetDiscoveryResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -35972,9 +37320,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        RunAssetDiscoveryResponse.decode = function decode(reader, length, error) {
+                        RunAssetDiscoveryResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.RunAssetDiscoveryResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -35986,11 +37338,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -36021,9 +37373,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        RunAssetDiscoveryResponse.verify = function verify(message) {
+                        RunAssetDiscoveryResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.state != null && message.hasOwnProperty("state"))
                                 switch (message.state) {
                                 default:
@@ -36035,7 +37391,7 @@
                                     break;
                                 }
                             if (message.duration != null && message.hasOwnProperty("duration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.duration);
+                                var error = $root.google.protobuf.Duration.verify(message.duration, long + 1);
                                 if (error)
                                     return "duration." + error;
                             }
@@ -36050,9 +37406,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.RunAssetDiscoveryResponse} RunAssetDiscoveryResponse
                          */
-                        RunAssetDiscoveryResponse.fromObject = function fromObject(object) {
+                        RunAssetDiscoveryResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.RunAssetDiscoveryResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.RunAssetDiscoveryResponse();
                             switch (object.state) {
                             default:
@@ -36081,7 +37441,7 @@
                             if (object.duration != null) {
                                 if (typeof object.duration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.RunAssetDiscoveryResponse.duration: object expected");
-                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration);
+                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration, long + 1);
                             }
                             return message;
                         };
@@ -36183,7 +37543,7 @@
                         function SecurityHealthAnalyticsCustomModule(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -36308,9 +37668,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityHealthAnalyticsCustomModule.decode = function decode(reader, length, error) {
+                        SecurityHealthAnalyticsCustomModule.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -36330,7 +37694,7 @@
                                         break;
                                     }
                                 case 5: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
@@ -36342,11 +37706,11 @@
                                         break;
                                     }
                                 case 8: {
-                                        message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.decode(reader, reader.uint32());
+                                        message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -36377,9 +37741,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityHealthAnalyticsCustomModule.verify = function verify(message) {
+                        SecurityHealthAnalyticsCustomModule.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -36397,7 +37765,7 @@
                                     break;
                                 }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -36408,7 +37776,7 @@
                                 if (!$util.isString(message.ancestorModule))
                                     return "ancestorModule: string expected";
                             if (message.customConfig != null && message.hasOwnProperty("customConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.verify(message.customConfig);
+                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.verify(message.customConfig, long + 1);
                                 if (error)
                                     return "customConfig." + error;
                             }
@@ -36423,9 +37791,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule} SecurityHealthAnalyticsCustomModule
                          */
-                        SecurityHealthAnalyticsCustomModule.fromObject = function fromObject(object) {
+                        SecurityHealthAnalyticsCustomModule.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -36458,7 +37830,7 @@
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.lastEditor != null)
                                 message.lastEditor = String(object.lastEditor);
@@ -36467,7 +37839,7 @@
                             if (object.customConfig != null) {
                                 if (typeof object.customConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.customConfig: object expected");
-                                message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.fromObject(object.customConfig);
+                                message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.fromObject(object.customConfig, long + 1);
                             }
                             return message;
                         };
@@ -38695,7 +40067,7 @@
                         function BulkMuteFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -38790,9 +40162,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BulkMuteFindingsRequest.decode = function decode(reader, length, error) {
+                        BulkMuteFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.BulkMuteFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -38816,7 +40192,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -38847,9 +40223,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BulkMuteFindingsRequest.verify = function verify(message) {
+                        BulkMuteFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -38879,9 +40259,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.BulkMuteFindingsRequest} BulkMuteFindingsRequest
                          */
-                        BulkMuteFindingsRequest.fromObject = function fromObject(object) {
+                        BulkMuteFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.BulkMuteFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.BulkMuteFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -39006,7 +40390,7 @@
                         function BulkMuteFindingsResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -39061,9 +40445,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BulkMuteFindingsResponse.decode = function decode(reader, length, error) {
+                        BulkMuteFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.BulkMuteFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -39071,7 +40459,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -39102,9 +40490,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BulkMuteFindingsResponse.verify = function verify(message) {
+                        BulkMuteFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -39116,9 +40508,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.BulkMuteFindingsResponse} BulkMuteFindingsResponse
                          */
-                        BulkMuteFindingsResponse.fromObject = function fromObject(object) {
+                        BulkMuteFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.BulkMuteFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.securitycenter.v1.BulkMuteFindingsResponse();
                         };
     
@@ -39186,7 +40582,7 @@
                         function CreateFindingRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -39271,9 +40667,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateFindingRequest.decode = function decode(reader, length, error) {
+                        CreateFindingRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CreateFindingRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -39289,11 +40689,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -39324,9 +40724,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateFindingRequest.verify = function verify(message) {
+                        CreateFindingRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -39334,7 +40738,7 @@
                                 if (!$util.isString(message.findingId))
                                     return "findingId: string expected";
                             if (message.finding != null && message.hasOwnProperty("finding")) {
-                                var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding);
+                                var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding, long + 1);
                                 if (error)
                                     return "finding." + error;
                             }
@@ -39349,9 +40753,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CreateFindingRequest} CreateFindingRequest
                          */
-                        CreateFindingRequest.fromObject = function fromObject(object) {
+                        CreateFindingRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CreateFindingRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CreateFindingRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -39360,7 +40768,7 @@
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CreateFindingRequest.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding, long + 1);
                             }
                             return message;
                         };
@@ -39443,7 +40851,7 @@
                         function CreateMuteConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -39528,9 +40936,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateMuteConfigRequest.decode = function decode(reader, length, error) {
+                        CreateMuteConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CreateMuteConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -39542,7 +40954,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.muteConfig = $root.google.cloud.securitycenter.v1.MuteConfig.decode(reader, reader.uint32());
+                                        message.muteConfig = $root.google.cloud.securitycenter.v1.MuteConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -39550,7 +40962,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -39581,14 +40993,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateMuteConfigRequest.verify = function verify(message) {
+                        CreateMuteConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.muteConfig != null && message.hasOwnProperty("muteConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.MuteConfig.verify(message.muteConfig);
+                                var error = $root.google.cloud.securitycenter.v1.MuteConfig.verify(message.muteConfig, long + 1);
                                 if (error)
                                     return "muteConfig." + error;
                             }
@@ -39606,16 +41022,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CreateMuteConfigRequest} CreateMuteConfigRequest
                          */
-                        CreateMuteConfigRequest.fromObject = function fromObject(object) {
+                        CreateMuteConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CreateMuteConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CreateMuteConfigRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.muteConfig != null) {
                                 if (typeof object.muteConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CreateMuteConfigRequest.muteConfig: object expected");
-                                message.muteConfig = $root.google.cloud.securitycenter.v1.MuteConfig.fromObject(object.muteConfig);
+                                message.muteConfig = $root.google.cloud.securitycenter.v1.MuteConfig.fromObject(object.muteConfig, long + 1);
                             }
                             if (object.muteConfigId != null)
                                 message.muteConfigId = String(object.muteConfigId);
@@ -39699,7 +41119,7 @@
                         function CreateResourceValueConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -39774,9 +41194,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateResourceValueConfigRequest.decode = function decode(reader, length, error) {
+                        CreateResourceValueConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CreateResourceValueConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -39788,11 +41212,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.resourceValueConfig = $root.google.cloud.securitycenter.v1.ResourceValueConfig.decode(reader, reader.uint32());
+                                        message.resourceValueConfig = $root.google.cloud.securitycenter.v1.ResourceValueConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -39823,14 +41247,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateResourceValueConfigRequest.verify = function verify(message) {
+                        CreateResourceValueConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.resourceValueConfig != null && message.hasOwnProperty("resourceValueConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.verify(message.resourceValueConfig);
+                                var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.verify(message.resourceValueConfig, long + 1);
                                 if (error)
                                     return "resourceValueConfig." + error;
                             }
@@ -39845,16 +41273,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CreateResourceValueConfigRequest} CreateResourceValueConfigRequest
                          */
-                        CreateResourceValueConfigRequest.fromObject = function fromObject(object) {
+                        CreateResourceValueConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CreateResourceValueConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CreateResourceValueConfigRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.resourceValueConfig != null) {
                                 if (typeof object.resourceValueConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CreateResourceValueConfigRequest.resourceValueConfig: object expected");
-                                message.resourceValueConfig = $root.google.cloud.securitycenter.v1.ResourceValueConfig.fromObject(object.resourceValueConfig);
+                                message.resourceValueConfig = $root.google.cloud.securitycenter.v1.ResourceValueConfig.fromObject(object.resourceValueConfig, long + 1);
                             }
                             return message;
                         };
@@ -39934,7 +41366,7 @@
                             this.requests = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -40010,9 +41442,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BatchCreateResourceValueConfigsRequest.decode = function decode(reader, length, error) {
+                        BatchCreateResourceValueConfigsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -40026,11 +41462,11 @@
                                 case 2: {
                                         if (!(message.requests && message.requests.length))
                                             message.requests = [];
-                                        message.requests.push($root.google.cloud.securitycenter.v1.CreateResourceValueConfigRequest.decode(reader, reader.uint32()));
+                                        message.requests.push($root.google.cloud.securitycenter.v1.CreateResourceValueConfigRequest.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -40061,9 +41497,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BatchCreateResourceValueConfigsRequest.verify = function verify(message) {
+                        BatchCreateResourceValueConfigsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -40071,7 +41511,7 @@
                                 if (!Array.isArray(message.requests))
                                     return "requests: array expected";
                                 for (var i = 0; i < message.requests.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.CreateResourceValueConfigRequest.verify(message.requests[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.CreateResourceValueConfigRequest.verify(message.requests[i], long + 1);
                                     if (error)
                                         return "requests." + error;
                                 }
@@ -40087,9 +41527,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsRequest} BatchCreateResourceValueConfigsRequest
                          */
-                        BatchCreateResourceValueConfigsRequest.fromObject = function fromObject(object) {
+                        BatchCreateResourceValueConfigsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -40100,7 +41544,7 @@
                                 for (var i = 0; i < object.requests.length; ++i) {
                                     if (typeof object.requests[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsRequest.requests: object expected");
-                                    message.requests[i] = $root.google.cloud.securitycenter.v1.CreateResourceValueConfigRequest.fromObject(object.requests[i]);
+                                    message.requests[i] = $root.google.cloud.securitycenter.v1.CreateResourceValueConfigRequest.fromObject(object.requests[i], long + 1);
                                 }
                             }
                             return message;
@@ -40183,7 +41627,7 @@
                             this.resourceValueConfigs = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -40249,9 +41693,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BatchCreateResourceValueConfigsResponse.decode = function decode(reader, length, error) {
+                        BatchCreateResourceValueConfigsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -40261,11 +41709,11 @@
                                 case 1: {
                                         if (!(message.resourceValueConfigs && message.resourceValueConfigs.length))
                                             message.resourceValueConfigs = [];
-                                        message.resourceValueConfigs.push($root.google.cloud.securitycenter.v1.ResourceValueConfig.decode(reader, reader.uint32()));
+                                        message.resourceValueConfigs.push($root.google.cloud.securitycenter.v1.ResourceValueConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -40296,14 +41744,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BatchCreateResourceValueConfigsResponse.verify = function verify(message) {
+                        BatchCreateResourceValueConfigsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.resourceValueConfigs != null && message.hasOwnProperty("resourceValueConfigs")) {
                                 if (!Array.isArray(message.resourceValueConfigs))
                                     return "resourceValueConfigs: array expected";
                                 for (var i = 0; i < message.resourceValueConfigs.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.verify(message.resourceValueConfigs[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.verify(message.resourceValueConfigs[i], long + 1);
                                     if (error)
                                         return "resourceValueConfigs." + error;
                                 }
@@ -40319,9 +41771,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsResponse} BatchCreateResourceValueConfigsResponse
                          */
-                        BatchCreateResourceValueConfigsResponse.fromObject = function fromObject(object) {
+                        BatchCreateResourceValueConfigsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsResponse();
                             if (object.resourceValueConfigs) {
                                 if (!Array.isArray(object.resourceValueConfigs))
@@ -40330,7 +41786,7 @@
                                 for (var i = 0; i < object.resourceValueConfigs.length; ++i) {
                                     if (typeof object.resourceValueConfigs[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.BatchCreateResourceValueConfigsResponse.resourceValueConfigs: object expected");
-                                    message.resourceValueConfigs[i] = $root.google.cloud.securitycenter.v1.ResourceValueConfig.fromObject(object.resourceValueConfigs[i]);
+                                    message.resourceValueConfigs[i] = $root.google.cloud.securitycenter.v1.ResourceValueConfig.fromObject(object.resourceValueConfigs[i], long + 1);
                                 }
                             }
                             return message;
@@ -40408,7 +41864,7 @@
                         function DeleteResourceValueConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -40473,9 +41929,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteResourceValueConfigRequest.decode = function decode(reader, length, error) {
+                        DeleteResourceValueConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.DeleteResourceValueConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -40487,7 +41947,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -40518,9 +41978,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteResourceValueConfigRequest.verify = function verify(message) {
+                        DeleteResourceValueConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -40535,9 +41999,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.DeleteResourceValueConfigRequest} DeleteResourceValueConfigRequest
                          */
-                        DeleteResourceValueConfigRequest.fromObject = function fromObject(object) {
+                        DeleteResourceValueConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.DeleteResourceValueConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.DeleteResourceValueConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -40613,7 +42081,7 @@
                         function GetResourceValueConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -40678,9 +42146,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetResourceValueConfigRequest.decode = function decode(reader, length, error) {
+                        GetResourceValueConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetResourceValueConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -40692,7 +42164,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -40723,9 +42195,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetResourceValueConfigRequest.verify = function verify(message) {
+                        GetResourceValueConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -40740,9 +42216,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetResourceValueConfigRequest} GetResourceValueConfigRequest
                          */
-                        GetResourceValueConfigRequest.fromObject = function fromObject(object) {
+                        GetResourceValueConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetResourceValueConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetResourceValueConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -40820,7 +42300,7 @@
                         function ListResourceValueConfigsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -40905,9 +42385,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListResourceValueConfigsRequest.decode = function decode(reader, length, error) {
+                        ListResourceValueConfigsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListResourceValueConfigsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -40927,7 +42411,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -40958,9 +42442,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListResourceValueConfigsRequest.verify = function verify(message) {
+                        ListResourceValueConfigsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -40981,9 +42469,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListResourceValueConfigsRequest} ListResourceValueConfigsRequest
                          */
-                        ListResourceValueConfigsRequest.fromObject = function fromObject(object) {
+                        ListResourceValueConfigsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListResourceValueConfigsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListResourceValueConfigsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -41072,7 +42564,7 @@
                             this.resourceValueConfigs = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -41148,9 +42640,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListResourceValueConfigsResponse.decode = function decode(reader, length, error) {
+                        ListResourceValueConfigsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListResourceValueConfigsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -41160,7 +42656,7 @@
                                 case 1: {
                                         if (!(message.resourceValueConfigs && message.resourceValueConfigs.length))
                                             message.resourceValueConfigs = [];
-                                        message.resourceValueConfigs.push($root.google.cloud.securitycenter.v1.ResourceValueConfig.decode(reader, reader.uint32()));
+                                        message.resourceValueConfigs.push($root.google.cloud.securitycenter.v1.ResourceValueConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -41168,7 +42664,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -41199,14 +42695,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListResourceValueConfigsResponse.verify = function verify(message) {
+                        ListResourceValueConfigsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.resourceValueConfigs != null && message.hasOwnProperty("resourceValueConfigs")) {
                                 if (!Array.isArray(message.resourceValueConfigs))
                                     return "resourceValueConfigs: array expected";
                                 for (var i = 0; i < message.resourceValueConfigs.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.verify(message.resourceValueConfigs[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.verify(message.resourceValueConfigs[i], long + 1);
                                     if (error)
                                         return "resourceValueConfigs." + error;
                                 }
@@ -41225,9 +42725,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListResourceValueConfigsResponse} ListResourceValueConfigsResponse
                          */
-                        ListResourceValueConfigsResponse.fromObject = function fromObject(object) {
+                        ListResourceValueConfigsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListResourceValueConfigsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListResourceValueConfigsResponse();
                             if (object.resourceValueConfigs) {
                                 if (!Array.isArray(object.resourceValueConfigs))
@@ -41236,7 +42740,7 @@
                                 for (var i = 0; i < object.resourceValueConfigs.length; ++i) {
                                     if (typeof object.resourceValueConfigs[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListResourceValueConfigsResponse.resourceValueConfigs: object expected");
-                                    message.resourceValueConfigs[i] = $root.google.cloud.securitycenter.v1.ResourceValueConfig.fromObject(object.resourceValueConfigs[i]);
+                                    message.resourceValueConfigs[i] = $root.google.cloud.securitycenter.v1.ResourceValueConfig.fromObject(object.resourceValueConfigs[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -41321,7 +42825,7 @@
                         function UpdateResourceValueConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -41396,9 +42900,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateResourceValueConfigRequest.decode = function decode(reader, length, error) {
+                        UpdateResourceValueConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateResourceValueConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -41406,15 +42914,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.resourceValueConfig = $root.google.cloud.securitycenter.v1.ResourceValueConfig.decode(reader, reader.uint32());
+                                        message.resourceValueConfig = $root.google.cloud.securitycenter.v1.ResourceValueConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -41445,16 +42953,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateResourceValueConfigRequest.verify = function verify(message) {
+                        UpdateResourceValueConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.resourceValueConfig != null && message.hasOwnProperty("resourceValueConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.verify(message.resourceValueConfig);
+                                var error = $root.google.cloud.securitycenter.v1.ResourceValueConfig.verify(message.resourceValueConfig, long + 1);
                                 if (error)
                                     return "resourceValueConfig." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -41469,19 +42981,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateResourceValueConfigRequest} UpdateResourceValueConfigRequest
                          */
-                        UpdateResourceValueConfigRequest.fromObject = function fromObject(object) {
+                        UpdateResourceValueConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateResourceValueConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateResourceValueConfigRequest();
                             if (object.resourceValueConfig != null) {
                                 if (typeof object.resourceValueConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateResourceValueConfigRequest.resourceValueConfig: object expected");
-                                message.resourceValueConfig = $root.google.cloud.securitycenter.v1.ResourceValueConfig.fromObject(object.resourceValueConfig);
+                                message.resourceValueConfig = $root.google.cloud.securitycenter.v1.ResourceValueConfig.fromObject(object.resourceValueConfig, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateResourceValueConfigRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -41561,7 +43077,7 @@
                         function CreateNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -41646,9 +43162,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        CreateNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CreateNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -41664,11 +43184,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.notificationConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.decode(reader, reader.uint32());
+                                        message.notificationConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -41699,9 +43219,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateNotificationConfigRequest.verify = function verify(message) {
+                        CreateNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -41709,7 +43233,7 @@
                                 if (!$util.isString(message.configId))
                                     return "configId: string expected";
                             if (message.notificationConfig != null && message.hasOwnProperty("notificationConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.NotificationConfig.verify(message.notificationConfig);
+                                var error = $root.google.cloud.securitycenter.v1.NotificationConfig.verify(message.notificationConfig, long + 1);
                                 if (error)
                                     return "notificationConfig." + error;
                             }
@@ -41724,9 +43248,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CreateNotificationConfigRequest} CreateNotificationConfigRequest
                          */
-                        CreateNotificationConfigRequest.fromObject = function fromObject(object) {
+                        CreateNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CreateNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CreateNotificationConfigRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -41735,7 +43263,7 @@
                             if (object.notificationConfig != null) {
                                 if (typeof object.notificationConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CreateNotificationConfigRequest.notificationConfig: object expected");
-                                message.notificationConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.fromObject(object.notificationConfig);
+                                message.notificationConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.fromObject(object.notificationConfig, long + 1);
                             }
                             return message;
                         };
@@ -41817,7 +43345,7 @@
                         function CreateSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -41892,9 +43420,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        CreateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CreateSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -41906,11 +43438,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32());
+                                        message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -41941,14 +43473,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        CreateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.securityHealthAnalyticsCustomModule != null && message.hasOwnProperty("securityHealthAnalyticsCustomModule")) {
-                                var error = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModule);
+                                var error = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModule, long + 1);
                                 if (error)
                                     return "securityHealthAnalyticsCustomModule." + error;
                             }
@@ -41963,16 +43499,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CreateSecurityHealthAnalyticsCustomModuleRequest} CreateSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        CreateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        CreateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CreateSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CreateSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.securityHealthAnalyticsCustomModule != null) {
                                 if (typeof object.securityHealthAnalyticsCustomModule !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CreateSecurityHealthAnalyticsCustomModuleRequest.securityHealthAnalyticsCustomModule: object expected");
-                                message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModule);
+                                message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModule, long + 1);
                             }
                             return message;
                         };
@@ -42051,7 +43591,7 @@
                         function CreateSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -42126,9 +43666,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateSourceRequest.decode = function decode(reader, length, error) {
+                        CreateSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CreateSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -42140,11 +43684,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.source = $root.google.cloud.securitycenter.v1.Source.decode(reader, reader.uint32());
+                                        message.source = $root.google.cloud.securitycenter.v1.Source.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -42175,14 +43719,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateSourceRequest.verify = function verify(message) {
+                        CreateSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.source != null && message.hasOwnProperty("source")) {
-                                var error = $root.google.cloud.securitycenter.v1.Source.verify(message.source);
+                                var error = $root.google.cloud.securitycenter.v1.Source.verify(message.source, long + 1);
                                 if (error)
                                     return "source." + error;
                             }
@@ -42197,16 +43745,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CreateSourceRequest} CreateSourceRequest
                          */
-                        CreateSourceRequest.fromObject = function fromObject(object) {
+                        CreateSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CreateSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CreateSourceRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.source != null) {
                                 if (typeof object.source !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CreateSourceRequest.source: object expected");
-                                message.source = $root.google.cloud.securitycenter.v1.Source.fromObject(object.source);
+                                message.source = $root.google.cloud.securitycenter.v1.Source.fromObject(object.source, long + 1);
                             }
                             return message;
                         };
@@ -42284,7 +43836,7 @@
                         function DeleteMuteConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -42349,9 +43901,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteMuteConfigRequest.decode = function decode(reader, length, error) {
+                        DeleteMuteConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.DeleteMuteConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -42363,7 +43919,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -42394,9 +43950,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteMuteConfigRequest.verify = function verify(message) {
+                        DeleteMuteConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -42411,9 +43971,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.DeleteMuteConfigRequest} DeleteMuteConfigRequest
                          */
-                        DeleteMuteConfigRequest.fromObject = function fromObject(object) {
+                        DeleteMuteConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.DeleteMuteConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.DeleteMuteConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -42489,7 +44053,7 @@
                         function DeleteNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -42554,9 +44118,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        DeleteNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.DeleteNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -42568,7 +44136,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -42599,9 +44167,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteNotificationConfigRequest.verify = function verify(message) {
+                        DeleteNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -42616,9 +44188,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.DeleteNotificationConfigRequest} DeleteNotificationConfigRequest
                          */
-                        DeleteNotificationConfigRequest.fromObject = function fromObject(object) {
+                        DeleteNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.DeleteNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.DeleteNotificationConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -42694,7 +44270,7 @@
                         function DeleteSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -42759,9 +44335,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        DeleteSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -42773,7 +44353,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -42804,9 +44384,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        DeleteSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -42821,9 +44405,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest} DeleteSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        DeleteSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        DeleteSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -42899,7 +44487,7 @@
                         function GetBigQueryExportRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -42964,9 +44552,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetBigQueryExportRequest.decode = function decode(reader, length, error) {
+                        GetBigQueryExportRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetBigQueryExportRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -42978,7 +44570,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -43009,9 +44601,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetBigQueryExportRequest.verify = function verify(message) {
+                        GetBigQueryExportRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -43026,9 +44622,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetBigQueryExportRequest} GetBigQueryExportRequest
                          */
-                        GetBigQueryExportRequest.fromObject = function fromObject(object) {
+                        GetBigQueryExportRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetBigQueryExportRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetBigQueryExportRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -43104,7 +44704,7 @@
                         function GetMuteConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -43169,9 +44769,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetMuteConfigRequest.decode = function decode(reader, length, error) {
+                        GetMuteConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetMuteConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -43183,7 +44787,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -43214,9 +44818,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetMuteConfigRequest.verify = function verify(message) {
+                        GetMuteConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -43231,9 +44839,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetMuteConfigRequest} GetMuteConfigRequest
                          */
-                        GetMuteConfigRequest.fromObject = function fromObject(object) {
+                        GetMuteConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetMuteConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetMuteConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -43309,7 +44921,7 @@
                         function GetNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -43374,9 +44986,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        GetNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -43388,7 +45004,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -43419,9 +45035,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetNotificationConfigRequest.verify = function verify(message) {
+                        GetNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -43436,9 +45056,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetNotificationConfigRequest} GetNotificationConfigRequest
                          */
-                        GetNotificationConfigRequest.fromObject = function fromObject(object) {
+                        GetNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetNotificationConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -43514,7 +45138,7 @@
                         function GetOrganizationSettingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -43579,9 +45203,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetOrganizationSettingsRequest.decode = function decode(reader, length, error) {
+                        GetOrganizationSettingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetOrganizationSettingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -43593,7 +45221,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -43624,9 +45252,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetOrganizationSettingsRequest.verify = function verify(message) {
+                        GetOrganizationSettingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -43641,9 +45273,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetOrganizationSettingsRequest} GetOrganizationSettingsRequest
                          */
-                        GetOrganizationSettingsRequest.fromObject = function fromObject(object) {
+                        GetOrganizationSettingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetOrganizationSettingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetOrganizationSettingsRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -43719,7 +45355,7 @@
                         function GetEffectiveSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -43784,9 +45420,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -43798,7 +45438,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -43829,9 +45469,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -43846,9 +45490,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest} GetEffectiveSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -43924,7 +45572,7 @@
                         function GetSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -43989,9 +45637,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        GetSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -44003,7 +45655,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -44034,9 +45686,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        GetSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -44051,9 +45707,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetSecurityHealthAnalyticsCustomModuleRequest} GetSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        GetSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        GetSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -44129,7 +45789,7 @@
                         function GetSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -44194,9 +45854,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetSourceRequest.decode = function decode(reader, length, error) {
+                        GetSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -44208,7 +45872,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -44239,9 +45903,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetSourceRequest.verify = function verify(message) {
+                        GetSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -44256,9 +45924,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetSourceRequest} GetSourceRequest
                          */
-                        GetSourceRequest.fromObject = function fromObject(object) {
+                        GetSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetSourceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -44340,7 +46012,7 @@
                         function GroupAssetsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -44465,9 +46137,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupAssetsRequest.decode = function decode(reader, length, error) {
+                        GroupAssetsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GroupAssetsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -44487,11 +46163,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -44503,7 +46179,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -44534,9 +46210,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupAssetsRequest.verify = function verify(message) {
+                        GroupAssetsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -44547,12 +46227,12 @@
                                 if (!$util.isString(message.groupBy))
                                     return "groupBy: string expected";
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -44573,9 +46253,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GroupAssetsRequest} GroupAssetsRequest
                          */
-                        GroupAssetsRequest.fromObject = function fromObject(object) {
+                        GroupAssetsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GroupAssetsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GroupAssetsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -44586,12 +46270,12 @@
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.GroupAssetsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.GroupAssetsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -44692,7 +46376,7 @@
                             this.groupByResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -44788,9 +46472,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupAssetsResponse.decode = function decode(reader, length, error) {
+                        GroupAssetsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GroupAssetsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -44800,11 +46488,11 @@
                                 case 1: {
                                         if (!(message.groupByResults && message.groupByResults.length))
                                             message.groupByResults = [];
-                                        message.groupByResults.push($root.google.cloud.securitycenter.v1.GroupResult.decode(reader, reader.uint32()));
+                                        message.groupByResults.push($root.google.cloud.securitycenter.v1.GroupResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -44816,7 +46504,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -44847,20 +46535,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupAssetsResponse.verify = function verify(message) {
+                        GroupAssetsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.groupByResults != null && message.hasOwnProperty("groupByResults")) {
                                 if (!Array.isArray(message.groupByResults))
                                     return "groupByResults: array expected";
                                 for (var i = 0; i < message.groupByResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.GroupResult.verify(message.groupByResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.GroupResult.verify(message.groupByResults[i], long + 1);
                                     if (error)
                                         return "groupByResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -44881,9 +46573,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GroupAssetsResponse} GroupAssetsResponse
                          */
-                        GroupAssetsResponse.fromObject = function fromObject(object) {
+                        GroupAssetsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GroupAssetsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GroupAssetsResponse();
                             if (object.groupByResults) {
                                 if (!Array.isArray(object.groupByResults))
@@ -44892,13 +46588,13 @@
                                 for (var i = 0; i < object.groupByResults.length; ++i) {
                                     if (typeof object.groupByResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.GroupAssetsResponse.groupByResults: object expected");
-                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1.GroupResult.fromObject(object.groupByResults[i]);
+                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1.GroupResult.fromObject(object.groupByResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.GroupAssetsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -44996,7 +46692,7 @@
                         function GroupFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -45121,9 +46817,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupFindingsRequest.decode = function decode(reader, length, error) {
+                        GroupFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GroupFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -45143,11 +46843,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -45159,7 +46859,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -45190,9 +46890,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupFindingsRequest.verify = function verify(message) {
+                        GroupFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -45203,12 +46907,12 @@
                                 if (!$util.isString(message.groupBy))
                                     return "groupBy: string expected";
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
@@ -45229,9 +46933,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GroupFindingsRequest} GroupFindingsRequest
                          */
-                        GroupFindingsRequest.fromObject = function fromObject(object) {
+                        GroupFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GroupFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GroupFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -45242,12 +46950,12 @@
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.GroupFindingsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.GroupFindingsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -45348,7 +47056,7 @@
                             this.groupByResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -45444,9 +47152,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupFindingsResponse.decode = function decode(reader, length, error) {
+                        GroupFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GroupFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -45456,11 +47168,11 @@
                                 case 1: {
                                         if (!(message.groupByResults && message.groupByResults.length))
                                             message.groupByResults = [];
-                                        message.groupByResults.push($root.google.cloud.securitycenter.v1.GroupResult.decode(reader, reader.uint32()));
+                                        message.groupByResults.push($root.google.cloud.securitycenter.v1.GroupResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -45472,7 +47184,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -45503,20 +47215,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupFindingsResponse.verify = function verify(message) {
+                        GroupFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.groupByResults != null && message.hasOwnProperty("groupByResults")) {
                                 if (!Array.isArray(message.groupByResults))
                                     return "groupByResults: array expected";
                                 for (var i = 0; i < message.groupByResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.GroupResult.verify(message.groupByResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.GroupResult.verify(message.groupByResults[i], long + 1);
                                     if (error)
                                         return "groupByResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -45537,9 +47253,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GroupFindingsResponse} GroupFindingsResponse
                          */
-                        GroupFindingsResponse.fromObject = function fromObject(object) {
+                        GroupFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GroupFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GroupFindingsResponse();
                             if (object.groupByResults) {
                                 if (!Array.isArray(object.groupByResults))
@@ -45548,13 +47268,13 @@
                                 for (var i = 0; i < object.groupByResults.length; ++i) {
                                     if (typeof object.groupByResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.GroupFindingsResponse.groupByResults: object expected");
-                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1.GroupResult.fromObject(object.groupByResults[i]);
+                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1.GroupResult.fromObject(object.groupByResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.GroupFindingsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -45648,7 +47368,7 @@
                             this.properties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -45726,9 +47446,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupResult.decode = function decode(reader, length, error) {
+                        GroupResult.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GroupResult(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -45748,13 +47472,15 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.properties, key);
                                         message.properties[key] = value;
                                         break;
                                     }
@@ -45763,7 +47489,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -45794,15 +47520,19 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupResult.verify = function verify(message) {
+                        GroupResult.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.properties != null && message.hasOwnProperty("properties")) {
                                 if (!$util.isObject(message.properties))
                                     return "properties: object expected";
                                 var key = Object.keys(message.properties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.properties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.properties[key[i]], long + 1);
                                     if (error)
                                         return "properties." + error;
                                 }
@@ -45821,18 +47551,24 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GroupResult} GroupResult
                          */
-                        GroupResult.fromObject = function fromObject(object) {
+                        GroupResult.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GroupResult)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GroupResult();
                             if (object.properties) {
                                 if (typeof object.properties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.GroupResult.properties: object expected");
                                 message.properties = {};
                                 for (var keys = Object.keys(object.properties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.properties, keys[i]);
                                     if (typeof object.properties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.GroupResult.properties: object expected");
-                                    message.properties[keys[i]] = $root.google.protobuf.Value.fromObject(object.properties[keys[i]]);
+                                    message.properties[keys[i]] = $root.google.protobuf.Value.fromObject(object.properties[keys[i]], long + 1);
                                 }
                             }
                             if (object.count != null)
@@ -45871,8 +47607,11 @@
                             var keys2;
                             if (message.properties && (keys2 = Object.keys(message.properties)).length) {
                                 object.properties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.properties, keys2[j]);
                                     object.properties[keys2[j]] = $root.google.protobuf.Value.toObject(message.properties[keys2[j]], options);
+                                }
                             }
                             if (message.count != null && message.hasOwnProperty("count"))
                                 if (typeof message.count === "number")
@@ -45933,7 +47672,7 @@
                         function ListDescendantSecurityHealthAnalyticsCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -46018,9 +47757,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -46040,7 +47783,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -46071,9 +47814,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -46094,9 +47841,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest} ListDescendantSecurityHealthAnalyticsCustomModulesRequest
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -46185,7 +47936,7 @@
                             this.securityHealthAnalyticsCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -46261,9 +48012,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -46273,7 +48028,7 @@
                                 case 1: {
                                         if (!(message.securityHealthAnalyticsCustomModules && message.securityHealthAnalyticsCustomModules.length))
                                             message.securityHealthAnalyticsCustomModules = [];
-                                        message.securityHealthAnalyticsCustomModules.push($root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32()));
+                                        message.securityHealthAnalyticsCustomModules.push($root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -46281,7 +48036,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -46312,14 +48067,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityHealthAnalyticsCustomModules != null && message.hasOwnProperty("securityHealthAnalyticsCustomModules")) {
                                 if (!Array.isArray(message.securityHealthAnalyticsCustomModules))
                                     return "securityHealthAnalyticsCustomModules: array expected";
                                 for (var i = 0; i < message.securityHealthAnalyticsCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModules[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModules[i], long + 1);
                                     if (error)
                                         return "securityHealthAnalyticsCustomModules." + error;
                                 }
@@ -46338,9 +48097,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse} ListDescendantSecurityHealthAnalyticsCustomModulesResponse
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse();
                             if (object.securityHealthAnalyticsCustomModules) {
                                 if (!Array.isArray(object.securityHealthAnalyticsCustomModules))
@@ -46349,7 +48112,7 @@
                                 for (var i = 0; i < object.securityHealthAnalyticsCustomModules.length; ++i) {
                                     if (typeof object.securityHealthAnalyticsCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse.securityHealthAnalyticsCustomModules: object expected");
-                                    message.securityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModules[i]);
+                                    message.securityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -46437,7 +48200,7 @@
                         function ListValuedResourcesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -46542,9 +48305,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListValuedResourcesRequest.decode = function decode(reader, length, error) {
+                        ListValuedResourcesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListValuedResourcesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -46572,7 +48339,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -46603,9 +48370,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListValuedResourcesRequest.verify = function verify(message) {
+                        ListValuedResourcesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -46632,9 +48403,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListValuedResourcesRequest} ListValuedResourcesRequest
                          */
-                        ListValuedResourcesRequest.fromObject = function fromObject(object) {
+                        ListValuedResourcesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListValuedResourcesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListValuedResourcesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -46734,7 +48509,7 @@
                             this.valuedResources = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -46820,9 +48595,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListValuedResourcesResponse.decode = function decode(reader, length, error) {
+                        ListValuedResourcesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListValuedResourcesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -46832,7 +48611,7 @@
                                 case 1: {
                                         if (!(message.valuedResources && message.valuedResources.length))
                                             message.valuedResources = [];
-                                        message.valuedResources.push($root.google.cloud.securitycenter.v1.ValuedResource.decode(reader, reader.uint32()));
+                                        message.valuedResources.push($root.google.cloud.securitycenter.v1.ValuedResource.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -46844,7 +48623,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -46875,14 +48654,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListValuedResourcesResponse.verify = function verify(message) {
+                        ListValuedResourcesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.valuedResources != null && message.hasOwnProperty("valuedResources")) {
                                 if (!Array.isArray(message.valuedResources))
                                     return "valuedResources: array expected";
                                 for (var i = 0; i < message.valuedResources.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ValuedResource.verify(message.valuedResources[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ValuedResource.verify(message.valuedResources[i], long + 1);
                                     if (error)
                                         return "valuedResources." + error;
                                 }
@@ -46904,9 +48687,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListValuedResourcesResponse} ListValuedResourcesResponse
                          */
-                        ListValuedResourcesResponse.fromObject = function fromObject(object) {
+                        ListValuedResourcesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListValuedResourcesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListValuedResourcesResponse();
                             if (object.valuedResources) {
                                 if (!Array.isArray(object.valuedResources))
@@ -46915,7 +48702,7 @@
                                 for (var i = 0; i < object.valuedResources.length; ++i) {
                                     if (typeof object.valuedResources[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListValuedResourcesResponse.valuedResources: object expected");
-                                    message.valuedResources[i] = $root.google.cloud.securitycenter.v1.ValuedResource.fromObject(object.valuedResources[i]);
+                                    message.valuedResources[i] = $root.google.cloud.securitycenter.v1.ValuedResource.fromObject(object.valuedResources[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -47008,7 +48795,7 @@
                         function ListAttackPathsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -47103,9 +48890,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAttackPathsRequest.decode = function decode(reader, length, error) {
+                        ListAttackPathsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListAttackPathsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -47129,7 +48920,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -47160,9 +48951,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAttackPathsRequest.verify = function verify(message) {
+                        ListAttackPathsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -47186,9 +48981,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListAttackPathsRequest} ListAttackPathsRequest
                          */
-                        ListAttackPathsRequest.fromObject = function fromObject(object) {
+                        ListAttackPathsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListAttackPathsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListAttackPathsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -47282,7 +49081,7 @@
                             this.attackPaths = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -47358,9 +49157,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAttackPathsResponse.decode = function decode(reader, length, error) {
+                        ListAttackPathsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListAttackPathsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -47370,7 +49173,7 @@
                                 case 1: {
                                         if (!(message.attackPaths && message.attackPaths.length))
                                             message.attackPaths = [];
-                                        message.attackPaths.push($root.google.cloud.securitycenter.v1.AttackPath.decode(reader, reader.uint32()));
+                                        message.attackPaths.push($root.google.cloud.securitycenter.v1.AttackPath.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -47378,7 +49181,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -47409,14 +49212,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAttackPathsResponse.verify = function verify(message) {
+                        ListAttackPathsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.attackPaths != null && message.hasOwnProperty("attackPaths")) {
                                 if (!Array.isArray(message.attackPaths))
                                     return "attackPaths: array expected";
                                 for (var i = 0; i < message.attackPaths.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.AttackPath.verify(message.attackPaths[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.AttackPath.verify(message.attackPaths[i], long + 1);
                                     if (error)
                                         return "attackPaths." + error;
                                 }
@@ -47435,9 +49242,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListAttackPathsResponse} ListAttackPathsResponse
                          */
-                        ListAttackPathsResponse.fromObject = function fromObject(object) {
+                        ListAttackPathsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListAttackPathsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListAttackPathsResponse();
                             if (object.attackPaths) {
                                 if (!Array.isArray(object.attackPaths))
@@ -47446,7 +49257,7 @@
                                 for (var i = 0; i < object.attackPaths.length; ++i) {
                                     if (typeof object.attackPaths[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListAttackPathsResponse.attackPaths: object expected");
-                                    message.attackPaths[i] = $root.google.cloud.securitycenter.v1.AttackPath.fromObject(object.attackPaths[i]);
+                                    message.attackPaths[i] = $root.google.cloud.securitycenter.v1.AttackPath.fromObject(object.attackPaths[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -47530,7 +49341,7 @@
                         function GetSimulationRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -47595,9 +49406,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetSimulationRequest.decode = function decode(reader, length, error) {
+                        GetSimulationRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetSimulationRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -47609,7 +49424,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -47640,9 +49455,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetSimulationRequest.verify = function verify(message) {
+                        GetSimulationRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -47657,9 +49476,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetSimulationRequest} GetSimulationRequest
                          */
-                        GetSimulationRequest.fromObject = function fromObject(object) {
+                        GetSimulationRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetSimulationRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetSimulationRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -47735,7 +49558,7 @@
                         function GetValuedResourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -47800,9 +49623,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetValuedResourceRequest.decode = function decode(reader, length, error) {
+                        GetValuedResourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetValuedResourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -47814,7 +49641,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -47845,9 +49672,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetValuedResourceRequest.verify = function verify(message) {
+                        GetValuedResourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -47862,9 +49693,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetValuedResourceRequest} GetValuedResourceRequest
                          */
-                        GetValuedResourceRequest.fromObject = function fromObject(object) {
+                        GetValuedResourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetValuedResourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetValuedResourceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -47942,7 +49777,7 @@
                         function ListMuteConfigsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -48027,9 +49862,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListMuteConfigsRequest.decode = function decode(reader, length, error) {
+                        ListMuteConfigsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListMuteConfigsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -48049,7 +49888,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -48080,9 +49919,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListMuteConfigsRequest.verify = function verify(message) {
+                        ListMuteConfigsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -48103,9 +49946,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListMuteConfigsRequest} ListMuteConfigsRequest
                          */
-                        ListMuteConfigsRequest.fromObject = function fromObject(object) {
+                        ListMuteConfigsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListMuteConfigsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListMuteConfigsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -48194,7 +50041,7 @@
                             this.muteConfigs = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -48270,9 +50117,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListMuteConfigsResponse.decode = function decode(reader, length, error) {
+                        ListMuteConfigsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListMuteConfigsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -48282,7 +50133,7 @@
                                 case 1: {
                                         if (!(message.muteConfigs && message.muteConfigs.length))
                                             message.muteConfigs = [];
-                                        message.muteConfigs.push($root.google.cloud.securitycenter.v1.MuteConfig.decode(reader, reader.uint32()));
+                                        message.muteConfigs.push($root.google.cloud.securitycenter.v1.MuteConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -48290,7 +50141,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -48321,14 +50172,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListMuteConfigsResponse.verify = function verify(message) {
+                        ListMuteConfigsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.muteConfigs != null && message.hasOwnProperty("muteConfigs")) {
                                 if (!Array.isArray(message.muteConfigs))
                                     return "muteConfigs: array expected";
                                 for (var i = 0; i < message.muteConfigs.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.MuteConfig.verify(message.muteConfigs[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.MuteConfig.verify(message.muteConfigs[i], long + 1);
                                     if (error)
                                         return "muteConfigs." + error;
                                 }
@@ -48347,9 +50202,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListMuteConfigsResponse} ListMuteConfigsResponse
                          */
-                        ListMuteConfigsResponse.fromObject = function fromObject(object) {
+                        ListMuteConfigsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListMuteConfigsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListMuteConfigsResponse();
                             if (object.muteConfigs) {
                                 if (!Array.isArray(object.muteConfigs))
@@ -48358,7 +50217,7 @@
                                 for (var i = 0; i < object.muteConfigs.length; ++i) {
                                     if (typeof object.muteConfigs[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListMuteConfigsResponse.muteConfigs: object expected");
-                                    message.muteConfigs[i] = $root.google.cloud.securitycenter.v1.MuteConfig.fromObject(object.muteConfigs[i]);
+                                    message.muteConfigs[i] = $root.google.cloud.securitycenter.v1.MuteConfig.fromObject(object.muteConfigs[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -48444,7 +50303,7 @@
                         function ListNotificationConfigsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -48529,9 +50388,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNotificationConfigsRequest.decode = function decode(reader, length, error) {
+                        ListNotificationConfigsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListNotificationConfigsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -48551,7 +50414,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -48582,9 +50445,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNotificationConfigsRequest.verify = function verify(message) {
+                        ListNotificationConfigsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -48605,9 +50472,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListNotificationConfigsRequest} ListNotificationConfigsRequest
                          */
-                        ListNotificationConfigsRequest.fromObject = function fromObject(object) {
+                        ListNotificationConfigsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListNotificationConfigsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListNotificationConfigsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -48696,7 +50567,7 @@
                             this.notificationConfigs = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -48772,9 +50643,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNotificationConfigsResponse.decode = function decode(reader, length, error) {
+                        ListNotificationConfigsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListNotificationConfigsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -48784,7 +50659,7 @@
                                 case 1: {
                                         if (!(message.notificationConfigs && message.notificationConfigs.length))
                                             message.notificationConfigs = [];
-                                        message.notificationConfigs.push($root.google.cloud.securitycenter.v1.NotificationConfig.decode(reader, reader.uint32()));
+                                        message.notificationConfigs.push($root.google.cloud.securitycenter.v1.NotificationConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -48792,7 +50667,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -48823,14 +50698,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNotificationConfigsResponse.verify = function verify(message) {
+                        ListNotificationConfigsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.notificationConfigs != null && message.hasOwnProperty("notificationConfigs")) {
                                 if (!Array.isArray(message.notificationConfigs))
                                     return "notificationConfigs: array expected";
                                 for (var i = 0; i < message.notificationConfigs.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.NotificationConfig.verify(message.notificationConfigs[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.NotificationConfig.verify(message.notificationConfigs[i], long + 1);
                                     if (error)
                                         return "notificationConfigs." + error;
                                 }
@@ -48849,9 +50728,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListNotificationConfigsResponse} ListNotificationConfigsResponse
                          */
-                        ListNotificationConfigsResponse.fromObject = function fromObject(object) {
+                        ListNotificationConfigsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListNotificationConfigsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListNotificationConfigsResponse();
                             if (object.notificationConfigs) {
                                 if (!Array.isArray(object.notificationConfigs))
@@ -48860,7 +50743,7 @@
                                 for (var i = 0; i < object.notificationConfigs.length; ++i) {
                                     if (typeof object.notificationConfigs[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListNotificationConfigsResponse.notificationConfigs: object expected");
-                                    message.notificationConfigs[i] = $root.google.cloud.securitycenter.v1.NotificationConfig.fromObject(object.notificationConfigs[i]);
+                                    message.notificationConfigs[i] = $root.google.cloud.securitycenter.v1.NotificationConfig.fromObject(object.notificationConfigs[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -48946,7 +50829,7 @@
                         function ListEffectiveSecurityHealthAnalyticsCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -49031,9 +50914,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -49053,7 +50940,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -49084,9 +50971,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -49107,9 +50998,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest} ListEffectiveSecurityHealthAnalyticsCustomModulesRequest
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -49198,7 +51093,7 @@
                             this.effectiveSecurityHealthAnalyticsCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -49274,9 +51169,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -49286,7 +51185,7 @@
                                 case 1: {
                                         if (!(message.effectiveSecurityHealthAnalyticsCustomModules && message.effectiveSecurityHealthAnalyticsCustomModules.length))
                                             message.effectiveSecurityHealthAnalyticsCustomModules = [];
-                                        message.effectiveSecurityHealthAnalyticsCustomModules.push($root.google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32()));
+                                        message.effectiveSecurityHealthAnalyticsCustomModules.push($root.google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -49294,7 +51193,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -49325,14 +51224,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.effectiveSecurityHealthAnalyticsCustomModules != null && message.hasOwnProperty("effectiveSecurityHealthAnalyticsCustomModules")) {
                                 if (!Array.isArray(message.effectiveSecurityHealthAnalyticsCustomModules))
                                     return "effectiveSecurityHealthAnalyticsCustomModules: array expected";
                                 for (var i = 0; i < message.effectiveSecurityHealthAnalyticsCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule.verify(message.effectiveSecurityHealthAnalyticsCustomModules[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule.verify(message.effectiveSecurityHealthAnalyticsCustomModules[i], long + 1);
                                     if (error)
                                         return "effectiveSecurityHealthAnalyticsCustomModules." + error;
                                 }
@@ -49351,9 +51254,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse} ListEffectiveSecurityHealthAnalyticsCustomModulesResponse
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse();
                             if (object.effectiveSecurityHealthAnalyticsCustomModules) {
                                 if (!Array.isArray(object.effectiveSecurityHealthAnalyticsCustomModules))
@@ -49362,7 +51269,7 @@
                                 for (var i = 0; i < object.effectiveSecurityHealthAnalyticsCustomModules.length; ++i) {
                                     if (typeof object.effectiveSecurityHealthAnalyticsCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.effectiveSecurityHealthAnalyticsCustomModules: object expected");
-                                    message.effectiveSecurityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule.fromObject(object.effectiveSecurityHealthAnalyticsCustomModules[i]);
+                                    message.effectiveSecurityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycenter.v1.EffectiveSecurityHealthAnalyticsCustomModule.fromObject(object.effectiveSecurityHealthAnalyticsCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -49448,7 +51355,7 @@
                         function ListSecurityHealthAnalyticsCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -49533,9 +51440,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListSecurityHealthAnalyticsCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -49555,7 +51466,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -49586,9 +51497,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message) {
+                        ListSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -49609,9 +51524,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListSecurityHealthAnalyticsCustomModulesRequest} ListSecurityHealthAnalyticsCustomModulesRequest
                          */
-                        ListSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListSecurityHealthAnalyticsCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListSecurityHealthAnalyticsCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -49700,7 +51619,7 @@
                             this.securityHealthAnalyticsCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -49776,9 +51695,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListSecurityHealthAnalyticsCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -49788,7 +51711,7 @@
                                 case 1: {
                                         if (!(message.securityHealthAnalyticsCustomModules && message.securityHealthAnalyticsCustomModules.length))
                                             message.securityHealthAnalyticsCustomModules = [];
-                                        message.securityHealthAnalyticsCustomModules.push($root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32()));
+                                        message.securityHealthAnalyticsCustomModules.push($root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -49796,7 +51719,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -49827,14 +51750,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message) {
+                        ListSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityHealthAnalyticsCustomModules != null && message.hasOwnProperty("securityHealthAnalyticsCustomModules")) {
                                 if (!Array.isArray(message.securityHealthAnalyticsCustomModules))
                                     return "securityHealthAnalyticsCustomModules: array expected";
                                 for (var i = 0; i < message.securityHealthAnalyticsCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModules[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModules[i], long + 1);
                                     if (error)
                                         return "securityHealthAnalyticsCustomModules." + error;
                                 }
@@ -49853,9 +51780,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListSecurityHealthAnalyticsCustomModulesResponse} ListSecurityHealthAnalyticsCustomModulesResponse
                          */
-                        ListSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListSecurityHealthAnalyticsCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListSecurityHealthAnalyticsCustomModulesResponse();
                             if (object.securityHealthAnalyticsCustomModules) {
                                 if (!Array.isArray(object.securityHealthAnalyticsCustomModules))
@@ -49864,7 +51795,7 @@
                                 for (var i = 0; i < object.securityHealthAnalyticsCustomModules.length; ++i) {
                                     if (typeof object.securityHealthAnalyticsCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListSecurityHealthAnalyticsCustomModulesResponse.securityHealthAnalyticsCustomModules: object expected");
-                                    message.securityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModules[i]);
+                                    message.securityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -49950,7 +51881,7 @@
                         function ListSourcesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -50035,9 +51966,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSourcesRequest.decode = function decode(reader, length, error) {
+                        ListSourcesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListSourcesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -50057,7 +51992,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -50088,9 +52023,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSourcesRequest.verify = function verify(message) {
+                        ListSourcesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -50111,9 +52050,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListSourcesRequest} ListSourcesRequest
                          */
-                        ListSourcesRequest.fromObject = function fromObject(object) {
+                        ListSourcesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListSourcesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListSourcesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -50202,7 +52145,7 @@
                             this.sources = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -50278,9 +52221,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSourcesResponse.decode = function decode(reader, length, error) {
+                        ListSourcesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListSourcesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -50290,7 +52237,7 @@
                                 case 1: {
                                         if (!(message.sources && message.sources.length))
                                             message.sources = [];
-                                        message.sources.push($root.google.cloud.securitycenter.v1.Source.decode(reader, reader.uint32()));
+                                        message.sources.push($root.google.cloud.securitycenter.v1.Source.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -50298,7 +52245,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -50329,14 +52276,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSourcesResponse.verify = function verify(message) {
+                        ListSourcesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.sources != null && message.hasOwnProperty("sources")) {
                                 if (!Array.isArray(message.sources))
                                     return "sources: array expected";
                                 for (var i = 0; i < message.sources.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.Source.verify(message.sources[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.Source.verify(message.sources[i], long + 1);
                                     if (error)
                                         return "sources." + error;
                                 }
@@ -50355,9 +52306,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListSourcesResponse} ListSourcesResponse
                          */
-                        ListSourcesResponse.fromObject = function fromObject(object) {
+                        ListSourcesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListSourcesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListSourcesResponse();
                             if (object.sources) {
                                 if (!Array.isArray(object.sources))
@@ -50366,7 +52321,7 @@
                                 for (var i = 0; i < object.sources.length; ++i) {
                                     if (typeof object.sources[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListSourcesResponse.sources: object expected");
-                                    message.sources[i] = $root.google.cloud.securitycenter.v1.Source.fromObject(object.sources[i]);
+                                    message.sources[i] = $root.google.cloud.securitycenter.v1.Source.fromObject(object.sources[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -50457,7 +52412,7 @@
                         function ListAssetsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -50592,9 +52547,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAssetsRequest.decode = function decode(reader, length, error) {
+                        ListAssetsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListAssetsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -50614,15 +52573,15 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
-                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
@@ -50634,7 +52593,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -50665,9 +52624,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAssetsRequest.verify = function verify(message) {
+                        ListAssetsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -50678,17 +52641,17 @@
                                 if (!$util.isString(message.orderBy))
                                     return "orderBy: string expected";
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
                             if (message.fieldMask != null && message.hasOwnProperty("fieldMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask, long + 1);
                                 if (error)
                                     return "fieldMask." + error;
                             }
@@ -50709,9 +52672,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListAssetsRequest} ListAssetsRequest
                          */
-                        ListAssetsRequest.fromObject = function fromObject(object) {
+                        ListAssetsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListAssetsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListAssetsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -50722,17 +52689,17 @@
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ListAssetsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ListAssetsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.fieldMask != null) {
                                 if (typeof object.fieldMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ListAssetsRequest.fieldMask: object expected");
-                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask);
+                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -50836,7 +52803,7 @@
                             this.listAssetsResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -50932,9 +52899,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAssetsResponse.decode = function decode(reader, length, error) {
+                        ListAssetsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListAssetsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -50944,11 +52915,11 @@
                                 case 1: {
                                         if (!(message.listAssetsResults && message.listAssetsResults.length))
                                             message.listAssetsResults = [];
-                                        message.listAssetsResults.push($root.google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult.decode(reader, reader.uint32()));
+                                        message.listAssetsResults.push($root.google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -50960,7 +52931,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -50991,20 +52962,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAssetsResponse.verify = function verify(message) {
+                        ListAssetsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.listAssetsResults != null && message.hasOwnProperty("listAssetsResults")) {
                                 if (!Array.isArray(message.listAssetsResults))
                                     return "listAssetsResults: array expected";
                                 for (var i = 0; i < message.listAssetsResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult.verify(message.listAssetsResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult.verify(message.listAssetsResults[i], long + 1);
                                     if (error)
                                         return "listAssetsResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -51025,9 +53000,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListAssetsResponse} ListAssetsResponse
                          */
-                        ListAssetsResponse.fromObject = function fromObject(object) {
+                        ListAssetsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListAssetsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListAssetsResponse();
                             if (object.listAssetsResults) {
                                 if (!Array.isArray(object.listAssetsResults))
@@ -51036,13 +53015,13 @@
                                 for (var i = 0; i < object.listAssetsResults.length; ++i) {
                                     if (typeof object.listAssetsResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListAssetsResponse.listAssetsResults: object expected");
-                                    message.listAssetsResults[i] = $root.google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult.fromObject(object.listAssetsResults[i]);
+                                    message.listAssetsResults[i] = $root.google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult.fromObject(object.listAssetsResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ListAssetsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -51132,7 +53111,7 @@
                             function ListAssetsResult(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -51207,9 +53186,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ListAssetsResult.decode = function decode(reader, length, error) {
+                            ListAssetsResult.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -51217,7 +53200,7 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.asset = $root.google.cloud.securitycenter.v1.Asset.decode(reader, reader.uint32());
+                                            message.asset = $root.google.cloud.securitycenter.v1.Asset.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 2: {
@@ -51225,7 +53208,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -51256,11 +53239,15 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ListAssetsResult.verify = function verify(message) {
+                            ListAssetsResult.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.asset != null && message.hasOwnProperty("asset")) {
-                                    var error = $root.google.cloud.securitycenter.v1.Asset.verify(message.asset);
+                                    var error = $root.google.cloud.securitycenter.v1.Asset.verify(message.asset, long + 1);
                                     if (error)
                                         return "asset." + error;
                                 }
@@ -51285,14 +53272,18 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult} ListAssetsResult
                              */
-                            ListAssetsResult.fromObject = function fromObject(object) {
+                            ListAssetsResult.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult();
                                 if (object.asset != null) {
                                     if (typeof object.asset !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListAssetsResponse.ListAssetsResult.asset: object expected");
-                                    message.asset = $root.google.cloud.securitycenter.v1.Asset.fromObject(object.asset);
+                                    message.asset = $root.google.cloud.securitycenter.v1.Asset.fromObject(object.asset, long + 1);
                                 }
                                 switch (object.stateChange) {
                                 default:
@@ -51422,7 +53413,7 @@
                         function ListFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -51557,9 +53548,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListFindingsRequest.decode = function decode(reader, length, error) {
+                        ListFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -51579,15 +53574,15 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
-                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
@@ -51599,7 +53594,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -51630,9 +53625,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListFindingsRequest.verify = function verify(message) {
+                        ListFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -51643,17 +53642,17 @@
                                 if (!$util.isString(message.orderBy))
                                     return "orderBy: string expected";
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
                             if (message.fieldMask != null && message.hasOwnProperty("fieldMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask, long + 1);
                                 if (error)
                                     return "fieldMask." + error;
                             }
@@ -51674,9 +53673,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListFindingsRequest} ListFindingsRequest
                          */
-                        ListFindingsRequest.fromObject = function fromObject(object) {
+                        ListFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -51687,17 +53690,17 @@
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ListFindingsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ListFindingsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.fieldMask != null) {
                                 if (typeof object.fieldMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ListFindingsRequest.fieldMask: object expected");
-                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask);
+                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -51801,7 +53804,7 @@
                             this.listFindingsResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -51897,9 +53900,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListFindingsResponse.decode = function decode(reader, length, error) {
+                        ListFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -51909,11 +53916,11 @@
                                 case 1: {
                                         if (!(message.listFindingsResults && message.listFindingsResults.length))
                                             message.listFindingsResults = [];
-                                        message.listFindingsResults.push($root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.decode(reader, reader.uint32()));
+                                        message.listFindingsResults.push($root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -51925,7 +53932,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -51956,20 +53963,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListFindingsResponse.verify = function verify(message) {
+                        ListFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.listFindingsResults != null && message.hasOwnProperty("listFindingsResults")) {
                                 if (!Array.isArray(message.listFindingsResults))
                                     return "listFindingsResults: array expected";
                                 for (var i = 0; i < message.listFindingsResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.verify(message.listFindingsResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.verify(message.listFindingsResults[i], long + 1);
                                     if (error)
                                         return "listFindingsResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -51990,9 +54001,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListFindingsResponse} ListFindingsResponse
                          */
-                        ListFindingsResponse.fromObject = function fromObject(object) {
+                        ListFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListFindingsResponse();
                             if (object.listFindingsResults) {
                                 if (!Array.isArray(object.listFindingsResults))
@@ -52001,13 +54016,13 @@
                                 for (var i = 0; i < object.listFindingsResults.length; ++i) {
                                     if (typeof object.listFindingsResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListFindingsResponse.listFindingsResults: object expected");
-                                    message.listFindingsResults[i] = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.fromObject(object.listFindingsResults[i]);
+                                    message.listFindingsResults[i] = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.fromObject(object.listFindingsResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ListFindingsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -52098,7 +54113,7 @@
                             function ListFindingsResult(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -52183,9 +54198,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ListFindingsResult.decode = function decode(reader, length, error) {
+                            ListFindingsResult.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -52193,7 +54212,7 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32());
+                                            message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 2: {
@@ -52201,11 +54220,11 @@
                                             break;
                                         }
                                     case 3: {
-                                            message.resource = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.decode(reader, reader.uint32());
+                                            message.resource = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -52236,11 +54255,15 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ListFindingsResult.verify = function verify(message) {
+                            ListFindingsResult.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.finding != null && message.hasOwnProperty("finding")) {
-                                    var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding);
+                                    var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding, long + 1);
                                     if (error)
                                         return "finding." + error;
                                 }
@@ -52256,7 +54279,7 @@
                                         break;
                                     }
                                 if (message.resource != null && message.hasOwnProperty("resource")) {
-                                    var error = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.verify(message.resource);
+                                    var error = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.verify(message.resource, long + 1);
                                     if (error)
                                         return "resource." + error;
                                 }
@@ -52271,14 +54294,18 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult} ListFindingsResult
                              */
-                            ListFindingsResult.fromObject = function fromObject(object) {
+                            ListFindingsResult.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult();
                                 if (object.finding != null) {
                                     if (typeof object.finding !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.finding: object expected");
-                                    message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding);
+                                    message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding, long + 1);
                                 }
                                 switch (object.stateChange) {
                                 default:
@@ -52311,7 +54338,7 @@
                                 if (object.resource != null) {
                                     if (typeof object.resource !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.resource: object expected");
-                                    message.resource = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.fromObject(object.resource);
+                                    message.resource = $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.fromObject(object.resource, long + 1);
                                 }
                                 return message;
                             };
@@ -52425,7 +54452,7 @@
                                     this.folders = [];
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -52655,9 +54682,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                Resource.decode = function decode(reader, length, error) {
+                                Resource.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -52695,7 +54726,7 @@
                                         case 7: {
                                                 if (!(message.folders && message.folders.length))
                                                     message.folders = [];
-                                                message.folders.push($root.google.cloud.securitycenter.v1.Folder.decode(reader, reader.uint32()));
+                                                message.folders.push($root.google.cloud.securitycenter.v1.Folder.decode(reader, reader.uint32(), undefined, long + 1));
                                                 break;
                                             }
                                         case 9: {
@@ -52715,15 +54746,15 @@
                                                 break;
                                             }
                                         case 16: {
-                                                message.awsMetadata = $root.google.cloud.securitycenter.v1.AwsMetadata.decode(reader, reader.uint32());
+                                                message.awsMetadata = $root.google.cloud.securitycenter.v1.AwsMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         case 17: {
-                                                message.azureMetadata = $root.google.cloud.securitycenter.v1.AzureMetadata.decode(reader, reader.uint32());
+                                                message.azureMetadata = $root.google.cloud.securitycenter.v1.AzureMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         case 18: {
-                                                message.resourcePath = $root.google.cloud.securitycenter.v1.ResourcePath.decode(reader, reader.uint32());
+                                                message.resourcePath = $root.google.cloud.securitycenter.v1.ResourcePath.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         case 19: {
@@ -52731,7 +54762,7 @@
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -52762,9 +54793,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                Resource.verify = function verify(message) {
+                                Resource.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     var properties = {};
                                     if (message.name != null && message.hasOwnProperty("name"))
                                         if (!$util.isString(message.name))
@@ -52791,7 +54826,7 @@
                                         if (!Array.isArray(message.folders))
                                             return "folders: array expected";
                                         for (var i = 0; i < message.folders.length; ++i) {
-                                            var error = $root.google.cloud.securitycenter.v1.Folder.verify(message.folders[i]);
+                                            var error = $root.google.cloud.securitycenter.v1.Folder.verify(message.folders[i], long + 1);
                                             if (error)
                                                 return "folders." + error;
                                         }
@@ -52818,7 +54853,7 @@
                                     if (message.awsMetadata != null && message.hasOwnProperty("awsMetadata")) {
                                         properties.cloudProviderMetadata = 1;
                                         {
-                                            var error = $root.google.cloud.securitycenter.v1.AwsMetadata.verify(message.awsMetadata);
+                                            var error = $root.google.cloud.securitycenter.v1.AwsMetadata.verify(message.awsMetadata, long + 1);
                                             if (error)
                                                 return "awsMetadata." + error;
                                         }
@@ -52828,13 +54863,13 @@
                                             return "cloudProviderMetadata: multiple values";
                                         properties.cloudProviderMetadata = 1;
                                         {
-                                            var error = $root.google.cloud.securitycenter.v1.AzureMetadata.verify(message.azureMetadata);
+                                            var error = $root.google.cloud.securitycenter.v1.AzureMetadata.verify(message.azureMetadata, long + 1);
                                             if (error)
                                                 return "azureMetadata." + error;
                                         }
                                     }
                                     if (message.resourcePath != null && message.hasOwnProperty("resourcePath")) {
-                                        var error = $root.google.cloud.securitycenter.v1.ResourcePath.verify(message.resourcePath);
+                                        var error = $root.google.cloud.securitycenter.v1.ResourcePath.verify(message.resourcePath, long + 1);
                                         if (error)
                                             return "resourcePath." + error;
                                     }
@@ -52852,9 +54887,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource} Resource
                                  */
-                                Resource.fromObject = function fromObject(object) {
+                                Resource.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource();
                                     if (object.name != null)
                                         message.name = String(object.name);
@@ -52877,7 +54916,7 @@
                                         for (var i = 0; i < object.folders.length; ++i) {
                                             if (typeof object.folders[i] !== "object")
                                                 throw TypeError(".google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.folders: object expected");
-                                            message.folders[i] = $root.google.cloud.securitycenter.v1.Folder.fromObject(object.folders[i]);
+                                            message.folders[i] = $root.google.cloud.securitycenter.v1.Folder.fromObject(object.folders[i], long + 1);
                                         }
                                     }
                                     switch (object.cloudProvider) {
@@ -52913,17 +54952,17 @@
                                     if (object.awsMetadata != null) {
                                         if (typeof object.awsMetadata !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.awsMetadata: object expected");
-                                        message.awsMetadata = $root.google.cloud.securitycenter.v1.AwsMetadata.fromObject(object.awsMetadata);
+                                        message.awsMetadata = $root.google.cloud.securitycenter.v1.AwsMetadata.fromObject(object.awsMetadata, long + 1);
                                     }
                                     if (object.azureMetadata != null) {
                                         if (typeof object.azureMetadata !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.azureMetadata: object expected");
-                                        message.azureMetadata = $root.google.cloud.securitycenter.v1.AzureMetadata.fromObject(object.azureMetadata);
+                                        message.azureMetadata = $root.google.cloud.securitycenter.v1.AzureMetadata.fromObject(object.azureMetadata, long + 1);
                                     }
                                     if (object.resourcePath != null) {
                                         if (typeof object.resourcePath !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1.ListFindingsResponse.ListFindingsResult.Resource.resourcePath: object expected");
-                                        message.resourcePath = $root.google.cloud.securitycenter.v1.ResourcePath.fromObject(object.resourcePath);
+                                        message.resourcePath = $root.google.cloud.securitycenter.v1.ResourcePath.fromObject(object.resourcePath, long + 1);
                                     }
                                     if (object.resourcePathString != null)
                                         message.resourcePathString = String(object.resourcePathString);
@@ -53061,7 +55100,7 @@
                         function SetFindingStateRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -53146,9 +55185,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SetFindingStateRequest.decode = function decode(reader, length, error) {
+                        SetFindingStateRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SetFindingStateRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -53164,11 +55207,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -53199,9 +55242,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SetFindingStateRequest.verify = function verify(message) {
+                        SetFindingStateRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -53215,7 +55262,7 @@
                                     break;
                                 }
                             if (message.startTime != null && message.hasOwnProperty("startTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1);
                                 if (error)
                                     return "startTime." + error;
                             }
@@ -53230,9 +55277,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SetFindingStateRequest} SetFindingStateRequest
                          */
-                        SetFindingStateRequest.fromObject = function fromObject(object) {
+                        SetFindingStateRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SetFindingStateRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SetFindingStateRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -53259,7 +55310,7 @@
                             if (object.startTime != null) {
                                 if (typeof object.startTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.SetFindingStateRequest.startTime: object expected");
-                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1);
                             }
                             return message;
                         };
@@ -53341,7 +55392,7 @@
                         function SetMuteRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -53416,9 +55467,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SetMuteRequest.decode = function decode(reader, length, error) {
+                        SetMuteRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SetMuteRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -53434,7 +55489,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -53465,9 +55520,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SetMuteRequest.verify = function verify(message) {
+                        SetMuteRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -53492,9 +55551,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SetMuteRequest} SetMuteRequest
                          */
-                        SetMuteRequest.fromObject = function fromObject(object) {
+                        SetMuteRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SetMuteRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SetMuteRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -53598,7 +55661,7 @@
                         function RunAssetDiscoveryRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -53663,9 +55726,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        RunAssetDiscoveryRequest.decode = function decode(reader, length, error) {
+                        RunAssetDiscoveryRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.RunAssetDiscoveryRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -53677,7 +55744,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -53708,9 +55775,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        RunAssetDiscoveryRequest.verify = function verify(message) {
+                        RunAssetDiscoveryRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -53725,9 +55796,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.RunAssetDiscoveryRequest} RunAssetDiscoveryRequest
                          */
-                        RunAssetDiscoveryRequest.fromObject = function fromObject(object) {
+                        RunAssetDiscoveryRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.RunAssetDiscoveryRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.RunAssetDiscoveryRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -53805,7 +55880,7 @@
                         function SimulateSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -53890,9 +55965,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        SimulateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -53904,15 +55983,15 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.decode(reader, reader.uint32());
+                                        message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.resource = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.decode(reader, reader.uint32());
+                                        message.resource = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -53943,19 +56022,23 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        SimulateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.customConfig != null && message.hasOwnProperty("customConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.verify(message.customConfig);
+                                var error = $root.google.cloud.securitycenter.v1.CustomConfig.verify(message.customConfig, long + 1);
                                 if (error)
                                     return "customConfig." + error;
                             }
                             if (message.resource != null && message.hasOwnProperty("resource")) {
-                                var error = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.verify(message.resource);
+                                var error = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.verify(message.resource, long + 1);
                                 if (error)
                                     return "resource." + error;
                             }
@@ -53970,21 +56053,25 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest} SimulateSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        SimulateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.customConfig != null) {
                                 if (typeof object.customConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.customConfig: object expected");
-                                message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.fromObject(object.customConfig);
+                                message.customConfig = $root.google.cloud.securitycenter.v1.CustomConfig.fromObject(object.customConfig, long + 1);
                             }
                             if (object.resource != null) {
                                 if (typeof object.resource !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.resource: object expected");
-                                message.resource = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.fromObject(object.resource);
+                                message.resource = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.fromObject(object.resource, long + 1);
                             }
                             return message;
                         };
@@ -54064,7 +56151,7 @@
                             function SimulatedResource(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -54149,9 +56236,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            SimulatedResource.decode = function decode(reader, length, error) {
+                            SimulatedResource.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -54163,15 +56254,15 @@
                                             break;
                                         }
                                     case 2: {
-                                            message.resourceData = $root.google.protobuf.Struct.decode(reader, reader.uint32());
+                                            message.resourceData = $root.google.protobuf.Struct.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 3: {
-                                            message.iamPolicyData = $root.google.iam.v1.Policy.decode(reader, reader.uint32());
+                                            message.iamPolicyData = $root.google.iam.v1.Policy.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -54202,19 +56293,23 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            SimulatedResource.verify = function verify(message) {
+                            SimulatedResource.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.resourceType != null && message.hasOwnProperty("resourceType"))
                                     if (!$util.isString(message.resourceType))
                                         return "resourceType: string expected";
                                 if (message.resourceData != null && message.hasOwnProperty("resourceData")) {
-                                    var error = $root.google.protobuf.Struct.verify(message.resourceData);
+                                    var error = $root.google.protobuf.Struct.verify(message.resourceData, long + 1);
                                     if (error)
                                         return "resourceData." + error;
                                 }
                                 if (message.iamPolicyData != null && message.hasOwnProperty("iamPolicyData")) {
-                                    var error = $root.google.iam.v1.Policy.verify(message.iamPolicyData);
+                                    var error = $root.google.iam.v1.Policy.verify(message.iamPolicyData, long + 1);
                                     if (error)
                                         return "iamPolicyData." + error;
                                 }
@@ -54229,21 +56324,25 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource} SimulatedResource
                              */
-                            SimulatedResource.fromObject = function fromObject(object) {
+                            SimulatedResource.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource();
                                 if (object.resourceType != null)
                                     message.resourceType = String(object.resourceType);
                                 if (object.resourceData != null) {
                                     if (typeof object.resourceData !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.resourceData: object expected");
-                                    message.resourceData = $root.google.protobuf.Struct.fromObject(object.resourceData);
+                                    message.resourceData = $root.google.protobuf.Struct.fromObject(object.resourceData, long + 1);
                                 }
                                 if (object.iamPolicyData != null) {
                                     if (typeof object.iamPolicyData !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.iamPolicyData: object expected");
-                                    message.iamPolicyData = $root.google.iam.v1.Policy.fromObject(object.iamPolicyData);
+                                    message.iamPolicyData = $root.google.iam.v1.Policy.fromObject(object.iamPolicyData, long + 1);
                                 }
                                 return message;
                             };
@@ -54327,7 +56426,7 @@
                         function SimulateSecurityHealthAnalyticsCustomModuleResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -54392,9 +56491,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleResponse.decode = function decode(reader, length, error) {
+                        SimulateSecurityHealthAnalyticsCustomModuleResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -54402,11 +56505,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.result = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.decode(reader, reader.uint32());
+                                        message.result = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -54437,11 +56540,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleResponse.verify = function verify(message) {
+                        SimulateSecurityHealthAnalyticsCustomModuleResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.result != null && message.hasOwnProperty("result")) {
-                                var error = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.verify(message.result);
+                                var error = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.verify(message.result, long + 1);
                                 if (error)
                                     return "result." + error;
                             }
@@ -54456,14 +56563,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse} SimulateSecurityHealthAnalyticsCustomModuleResponse
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleResponse.fromObject = function fromObject(object) {
+                        SimulateSecurityHealthAnalyticsCustomModuleResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse();
                             if (object.result != null) {
                                 if (typeof object.result !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.result: object expected");
-                                message.result = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.fromObject(object.result);
+                                message.result = $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.fromObject(object.result, long + 1);
                             }
                             return message;
                         };
@@ -54536,7 +56647,7 @@
                             function SimulatedResult(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -54635,9 +56746,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            SimulatedResult.decode = function decode(reader, length, error) {
+                            SimulatedResult.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -54645,19 +56760,19 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32());
+                                            message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 2: {
-                                            message.noViolation = $root.google.protobuf.Empty.decode(reader, reader.uint32());
+                                            message.noViolation = $root.google.protobuf.Empty.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 3: {
-                                            message.error = $root.google.rpc.Status.decode(reader, reader.uint32());
+                                            message.error = $root.google.rpc.Status.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -54688,14 +56803,18 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            SimulatedResult.verify = function verify(message) {
+                            SimulatedResult.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 var properties = {};
                                 if (message.finding != null && message.hasOwnProperty("finding")) {
                                     properties.result = 1;
                                     {
-                                        var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding);
+                                        var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding, long + 1);
                                         if (error)
                                             return "finding." + error;
                                     }
@@ -54705,7 +56824,7 @@
                                         return "result: multiple values";
                                     properties.result = 1;
                                     {
-                                        var error = $root.google.protobuf.Empty.verify(message.noViolation);
+                                        var error = $root.google.protobuf.Empty.verify(message.noViolation, long + 1);
                                         if (error)
                                             return "noViolation." + error;
                                     }
@@ -54715,7 +56834,7 @@
                                         return "result: multiple values";
                                     properties.result = 1;
                                     {
-                                        var error = $root.google.rpc.Status.verify(message.error);
+                                        var error = $root.google.rpc.Status.verify(message.error, long + 1);
                                         if (error)
                                             return "error." + error;
                                     }
@@ -54731,24 +56850,28 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult} SimulatedResult
                              */
-                            SimulatedResult.fromObject = function fromObject(object) {
+                            SimulatedResult.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult();
                                 if (object.finding != null) {
                                     if (typeof object.finding !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.finding: object expected");
-                                    message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding);
+                                    message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding, long + 1);
                                 }
                                 if (object.noViolation != null) {
                                     if (typeof object.noViolation !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.noViolation: object expected");
-                                    message.noViolation = $root.google.protobuf.Empty.fromObject(object.noViolation);
+                                    message.noViolation = $root.google.protobuf.Empty.fromObject(object.noViolation, long + 1);
                                 }
                                 if (object.error != null) {
                                     if (typeof object.error !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.error: object expected");
-                                    message.error = $root.google.rpc.Status.fromObject(object.error);
+                                    message.error = $root.google.rpc.Status.fromObject(object.error, long + 1);
                                 }
                                 return message;
                             };
@@ -54837,7 +56960,7 @@
                         function UpdateExternalSystemRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -54912,9 +57035,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateExternalSystemRequest.decode = function decode(reader, length, error) {
+                        UpdateExternalSystemRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateExternalSystemRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -54922,15 +57049,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.externalSystem = $root.google.cloud.securitycenter.v1.ExternalSystem.decode(reader, reader.uint32());
+                                        message.externalSystem = $root.google.cloud.securitycenter.v1.ExternalSystem.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -54961,16 +57088,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateExternalSystemRequest.verify = function verify(message) {
+                        UpdateExternalSystemRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.externalSystem != null && message.hasOwnProperty("externalSystem")) {
-                                var error = $root.google.cloud.securitycenter.v1.ExternalSystem.verify(message.externalSystem);
+                                var error = $root.google.cloud.securitycenter.v1.ExternalSystem.verify(message.externalSystem, long + 1);
                                 if (error)
                                     return "externalSystem." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -54985,19 +57116,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateExternalSystemRequest} UpdateExternalSystemRequest
                          */
-                        UpdateExternalSystemRequest.fromObject = function fromObject(object) {
+                        UpdateExternalSystemRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateExternalSystemRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateExternalSystemRequest();
                             if (object.externalSystem != null) {
                                 if (typeof object.externalSystem !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateExternalSystemRequest.externalSystem: object expected");
-                                message.externalSystem = $root.google.cloud.securitycenter.v1.ExternalSystem.fromObject(object.externalSystem);
+                                message.externalSystem = $root.google.cloud.securitycenter.v1.ExternalSystem.fromObject(object.externalSystem, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateExternalSystemRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -55076,7 +57211,7 @@
                         function UpdateFindingRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -55151,9 +57286,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateFindingRequest.decode = function decode(reader, length, error) {
+                        UpdateFindingRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateFindingRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -55161,15 +57300,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -55200,16 +57339,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateFindingRequest.verify = function verify(message) {
+                        UpdateFindingRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.finding != null && message.hasOwnProperty("finding")) {
-                                var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding);
+                                var error = $root.google.cloud.securitycenter.v1.Finding.verify(message.finding, long + 1);
                                 if (error)
                                     return "finding." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -55224,19 +57367,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateFindingRequest} UpdateFindingRequest
                          */
-                        UpdateFindingRequest.fromObject = function fromObject(object) {
+                        UpdateFindingRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateFindingRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateFindingRequest();
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateFindingRequest.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v1.Finding.fromObject(object.finding, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateFindingRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -55315,7 +57462,7 @@
                         function UpdateMuteConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -55390,9 +57537,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateMuteConfigRequest.decode = function decode(reader, length, error) {
+                        UpdateMuteConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateMuteConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -55400,15 +57551,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.muteConfig = $root.google.cloud.securitycenter.v1.MuteConfig.decode(reader, reader.uint32());
+                                        message.muteConfig = $root.google.cloud.securitycenter.v1.MuteConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -55439,16 +57590,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateMuteConfigRequest.verify = function verify(message) {
+                        UpdateMuteConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.muteConfig != null && message.hasOwnProperty("muteConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.MuteConfig.verify(message.muteConfig);
+                                var error = $root.google.cloud.securitycenter.v1.MuteConfig.verify(message.muteConfig, long + 1);
                                 if (error)
                                     return "muteConfig." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -55463,19 +57618,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateMuteConfigRequest} UpdateMuteConfigRequest
                          */
-                        UpdateMuteConfigRequest.fromObject = function fromObject(object) {
+                        UpdateMuteConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateMuteConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateMuteConfigRequest();
                             if (object.muteConfig != null) {
                                 if (typeof object.muteConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateMuteConfigRequest.muteConfig: object expected");
-                                message.muteConfig = $root.google.cloud.securitycenter.v1.MuteConfig.fromObject(object.muteConfig);
+                                message.muteConfig = $root.google.cloud.securitycenter.v1.MuteConfig.fromObject(object.muteConfig, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateMuteConfigRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -55554,7 +57713,7 @@
                         function UpdateNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -55629,9 +57788,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        UpdateNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -55639,15 +57802,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.notificationConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.decode(reader, reader.uint32());
+                                        message.notificationConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -55678,16 +57841,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateNotificationConfigRequest.verify = function verify(message) {
+                        UpdateNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.notificationConfig != null && message.hasOwnProperty("notificationConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1.NotificationConfig.verify(message.notificationConfig);
+                                var error = $root.google.cloud.securitycenter.v1.NotificationConfig.verify(message.notificationConfig, long + 1);
                                 if (error)
                                     return "notificationConfig." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -55702,19 +57869,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateNotificationConfigRequest} UpdateNotificationConfigRequest
                          */
-                        UpdateNotificationConfigRequest.fromObject = function fromObject(object) {
+                        UpdateNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateNotificationConfigRequest();
                             if (object.notificationConfig != null) {
                                 if (typeof object.notificationConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateNotificationConfigRequest.notificationConfig: object expected");
-                                message.notificationConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.fromObject(object.notificationConfig);
+                                message.notificationConfig = $root.google.cloud.securitycenter.v1.NotificationConfig.fromObject(object.notificationConfig, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateNotificationConfigRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -55793,7 +57964,7 @@
                         function UpdateOrganizationSettingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -55868,9 +58039,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateOrganizationSettingsRequest.decode = function decode(reader, length, error) {
+                        UpdateOrganizationSettingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateOrganizationSettingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -55878,15 +58053,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.organizationSettings = $root.google.cloud.securitycenter.v1.OrganizationSettings.decode(reader, reader.uint32());
+                                        message.organizationSettings = $root.google.cloud.securitycenter.v1.OrganizationSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -55917,16 +58092,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateOrganizationSettingsRequest.verify = function verify(message) {
+                        UpdateOrganizationSettingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.organizationSettings != null && message.hasOwnProperty("organizationSettings")) {
-                                var error = $root.google.cloud.securitycenter.v1.OrganizationSettings.verify(message.organizationSettings);
+                                var error = $root.google.cloud.securitycenter.v1.OrganizationSettings.verify(message.organizationSettings, long + 1);
                                 if (error)
                                     return "organizationSettings." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -55941,19 +58120,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateOrganizationSettingsRequest} UpdateOrganizationSettingsRequest
                          */
-                        UpdateOrganizationSettingsRequest.fromObject = function fromObject(object) {
+                        UpdateOrganizationSettingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateOrganizationSettingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateOrganizationSettingsRequest();
                             if (object.organizationSettings != null) {
                                 if (typeof object.organizationSettings !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateOrganizationSettingsRequest.organizationSettings: object expected");
-                                message.organizationSettings = $root.google.cloud.securitycenter.v1.OrganizationSettings.fromObject(object.organizationSettings);
+                                message.organizationSettings = $root.google.cloud.securitycenter.v1.OrganizationSettings.fromObject(object.organizationSettings, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateOrganizationSettingsRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -56032,7 +58215,7 @@
                         function UpdateSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -56107,9 +58290,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        UpdateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -56117,15 +58304,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32());
+                                        message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -56156,16 +58343,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        UpdateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityHealthAnalyticsCustomModule != null && message.hasOwnProperty("securityHealthAnalyticsCustomModule")) {
-                                var error = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModule);
+                                var error = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModule, long + 1);
                                 if (error)
                                     return "securityHealthAnalyticsCustomModule." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -56180,19 +58371,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest} UpdateSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        UpdateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        UpdateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.securityHealthAnalyticsCustomModule != null) {
                                 if (typeof object.securityHealthAnalyticsCustomModule !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest.securityHealthAnalyticsCustomModule: object expected");
-                                message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModule);
+                                message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycenter.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModule, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -56271,7 +58466,7 @@
                         function UpdateSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -56346,9 +58541,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSourceRequest.decode = function decode(reader, length, error) {
+                        UpdateSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -56356,15 +58555,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.source = $root.google.cloud.securitycenter.v1.Source.decode(reader, reader.uint32());
+                                        message.source = $root.google.cloud.securitycenter.v1.Source.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -56395,16 +58594,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSourceRequest.verify = function verify(message) {
+                        UpdateSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.source != null && message.hasOwnProperty("source")) {
-                                var error = $root.google.cloud.securitycenter.v1.Source.verify(message.source);
+                                var error = $root.google.cloud.securitycenter.v1.Source.verify(message.source, long + 1);
                                 if (error)
                                     return "source." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -56419,19 +58622,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateSourceRequest} UpdateSourceRequest
                          */
-                        UpdateSourceRequest.fromObject = function fromObject(object) {
+                        UpdateSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateSourceRequest();
                             if (object.source != null) {
                                 if (typeof object.source !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateSourceRequest.source: object expected");
-                                message.source = $root.google.cloud.securitycenter.v1.Source.fromObject(object.source);
+                                message.source = $root.google.cloud.securitycenter.v1.Source.fromObject(object.source, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateSourceRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -56511,7 +58718,7 @@
                         function UpdateSecurityMarksRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -56596,9 +58803,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSecurityMarksRequest.decode = function decode(reader, length, error) {
+                        UpdateSecurityMarksRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateSecurityMarksRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -56606,19 +58817,19 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -56649,21 +58860,25 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSecurityMarksRequest.verify = function verify(message) {
+                        UpdateSecurityMarksRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v1.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v1.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
                             if (message.startTime != null && message.hasOwnProperty("startTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1);
                                 if (error)
                                     return "startTime." + error;
                             }
@@ -56678,24 +58893,28 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateSecurityMarksRequest} UpdateSecurityMarksRequest
                          */
-                        UpdateSecurityMarksRequest.fromObject = function fromObject(object) {
+                        UpdateSecurityMarksRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateSecurityMarksRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateSecurityMarksRequest();
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateSecurityMarksRequest.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v1.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateSecurityMarksRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             if (object.startTime != null) {
                                 if (typeof object.startTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateSecurityMarksRequest.startTime: object expected");
-                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1);
                             }
                             return message;
                         };
@@ -56778,7 +58997,7 @@
                         function CreateBigQueryExportRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -56863,9 +59082,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateBigQueryExportRequest.decode = function decode(reader, length, error) {
+                        CreateBigQueryExportRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CreateBigQueryExportRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -56877,7 +59100,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.bigQueryExport = $root.google.cloud.securitycenter.v1.BigQueryExport.decode(reader, reader.uint32());
+                                        message.bigQueryExport = $root.google.cloud.securitycenter.v1.BigQueryExport.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -56885,7 +59108,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -56916,14 +59139,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateBigQueryExportRequest.verify = function verify(message) {
+                        CreateBigQueryExportRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.bigQueryExport != null && message.hasOwnProperty("bigQueryExport")) {
-                                var error = $root.google.cloud.securitycenter.v1.BigQueryExport.verify(message.bigQueryExport);
+                                var error = $root.google.cloud.securitycenter.v1.BigQueryExport.verify(message.bigQueryExport, long + 1);
                                 if (error)
                                     return "bigQueryExport." + error;
                             }
@@ -56941,16 +59168,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CreateBigQueryExportRequest} CreateBigQueryExportRequest
                          */
-                        CreateBigQueryExportRequest.fromObject = function fromObject(object) {
+                        CreateBigQueryExportRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CreateBigQueryExportRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CreateBigQueryExportRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.bigQueryExport != null) {
                                 if (typeof object.bigQueryExport !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CreateBigQueryExportRequest.bigQueryExport: object expected");
-                                message.bigQueryExport = $root.google.cloud.securitycenter.v1.BigQueryExport.fromObject(object.bigQueryExport);
+                                message.bigQueryExport = $root.google.cloud.securitycenter.v1.BigQueryExport.fromObject(object.bigQueryExport, long + 1);
                             }
                             if (object.bigQueryExportId != null)
                                 message.bigQueryExportId = String(object.bigQueryExportId);
@@ -57034,7 +59265,7 @@
                         function UpdateBigQueryExportRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -57109,9 +59340,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateBigQueryExportRequest.decode = function decode(reader, length, error) {
+                        UpdateBigQueryExportRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateBigQueryExportRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -57119,15 +59354,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.bigQueryExport = $root.google.cloud.securitycenter.v1.BigQueryExport.decode(reader, reader.uint32());
+                                        message.bigQueryExport = $root.google.cloud.securitycenter.v1.BigQueryExport.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -57158,16 +59393,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateBigQueryExportRequest.verify = function verify(message) {
+                        UpdateBigQueryExportRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.bigQueryExport != null && message.hasOwnProperty("bigQueryExport")) {
-                                var error = $root.google.cloud.securitycenter.v1.BigQueryExport.verify(message.bigQueryExport);
+                                var error = $root.google.cloud.securitycenter.v1.BigQueryExport.verify(message.bigQueryExport, long + 1);
                                 if (error)
                                     return "bigQueryExport." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -57182,19 +59421,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateBigQueryExportRequest} UpdateBigQueryExportRequest
                          */
-                        UpdateBigQueryExportRequest.fromObject = function fromObject(object) {
+                        UpdateBigQueryExportRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateBigQueryExportRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateBigQueryExportRequest();
                             if (object.bigQueryExport != null) {
                                 if (typeof object.bigQueryExport !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateBigQueryExportRequest.bigQueryExport: object expected");
-                                message.bigQueryExport = $root.google.cloud.securitycenter.v1.BigQueryExport.fromObject(object.bigQueryExport);
+                                message.bigQueryExport = $root.google.cloud.securitycenter.v1.BigQueryExport.fromObject(object.bigQueryExport, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateBigQueryExportRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -57274,7 +59517,7 @@
                         function ListBigQueryExportsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -57359,9 +59602,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListBigQueryExportsRequest.decode = function decode(reader, length, error) {
+                        ListBigQueryExportsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListBigQueryExportsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -57381,7 +59628,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -57412,9 +59659,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListBigQueryExportsRequest.verify = function verify(message) {
+                        ListBigQueryExportsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -57435,9 +59686,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListBigQueryExportsRequest} ListBigQueryExportsRequest
                          */
-                        ListBigQueryExportsRequest.fromObject = function fromObject(object) {
+                        ListBigQueryExportsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListBigQueryExportsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListBigQueryExportsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -57526,7 +59781,7 @@
                             this.bigQueryExports = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -57602,9 +59857,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListBigQueryExportsResponse.decode = function decode(reader, length, error) {
+                        ListBigQueryExportsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListBigQueryExportsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -57614,7 +59873,7 @@
                                 case 1: {
                                         if (!(message.bigQueryExports && message.bigQueryExports.length))
                                             message.bigQueryExports = [];
-                                        message.bigQueryExports.push($root.google.cloud.securitycenter.v1.BigQueryExport.decode(reader, reader.uint32()));
+                                        message.bigQueryExports.push($root.google.cloud.securitycenter.v1.BigQueryExport.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -57622,7 +59881,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -57653,14 +59912,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListBigQueryExportsResponse.verify = function verify(message) {
+                        ListBigQueryExportsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.bigQueryExports != null && message.hasOwnProperty("bigQueryExports")) {
                                 if (!Array.isArray(message.bigQueryExports))
                                     return "bigQueryExports: array expected";
                                 for (var i = 0; i < message.bigQueryExports.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.BigQueryExport.verify(message.bigQueryExports[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.BigQueryExport.verify(message.bigQueryExports[i], long + 1);
                                     if (error)
                                         return "bigQueryExports." + error;
                                 }
@@ -57679,9 +59942,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListBigQueryExportsResponse} ListBigQueryExportsResponse
                          */
-                        ListBigQueryExportsResponse.fromObject = function fromObject(object) {
+                        ListBigQueryExportsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListBigQueryExportsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListBigQueryExportsResponse();
                             if (object.bigQueryExports) {
                                 if (!Array.isArray(object.bigQueryExports))
@@ -57690,7 +59957,7 @@
                                 for (var i = 0; i < object.bigQueryExports.length; ++i) {
                                     if (typeof object.bigQueryExports[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListBigQueryExportsResponse.bigQueryExports: object expected");
-                                    message.bigQueryExports[i] = $root.google.cloud.securitycenter.v1.BigQueryExport.fromObject(object.bigQueryExports[i]);
+                                    message.bigQueryExports[i] = $root.google.cloud.securitycenter.v1.BigQueryExport.fromObject(object.bigQueryExports[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -57774,7 +60041,7 @@
                         function DeleteBigQueryExportRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -57839,9 +60106,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteBigQueryExportRequest.decode = function decode(reader, length, error) {
+                        DeleteBigQueryExportRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.DeleteBigQueryExportRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -57853,7 +60124,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -57884,9 +60155,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteBigQueryExportRequest.verify = function verify(message) {
+                        DeleteBigQueryExportRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -57901,9 +60176,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.DeleteBigQueryExportRequest} DeleteBigQueryExportRequest
                          */
-                        DeleteBigQueryExportRequest.fromObject = function fromObject(object) {
+                        DeleteBigQueryExportRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.DeleteBigQueryExportRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.DeleteBigQueryExportRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -57980,7 +60259,7 @@
                         function CreateEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -58055,9 +60334,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        CreateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.CreateEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -58069,11 +60352,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.eventThreatDetectionCustomModule = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32());
+                                        message.eventThreatDetectionCustomModule = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -58104,14 +60387,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        CreateEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.eventThreatDetectionCustomModule != null && message.hasOwnProperty("eventThreatDetectionCustomModule")) {
-                                var error = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModule);
+                                var error = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModule, long + 1);
                                 if (error)
                                     return "eventThreatDetectionCustomModule." + error;
                             }
@@ -58126,16 +60413,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.CreateEventThreatDetectionCustomModuleRequest} CreateEventThreatDetectionCustomModuleRequest
                          */
-                        CreateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        CreateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.CreateEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.CreateEventThreatDetectionCustomModuleRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.eventThreatDetectionCustomModule != null) {
                                 if (typeof object.eventThreatDetectionCustomModule !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.CreateEventThreatDetectionCustomModuleRequest.eventThreatDetectionCustomModule: object expected");
-                                message.eventThreatDetectionCustomModule = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModule);
+                                message.eventThreatDetectionCustomModule = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModule, long + 1);
                             }
                             return message;
                         };
@@ -58215,7 +60506,7 @@
                         function ValidateEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -58300,9 +60591,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ValidateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        ValidateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ValidateEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -58322,7 +60617,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -58353,9 +60648,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ValidateEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        ValidateEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -58376,9 +60675,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ValidateEventThreatDetectionCustomModuleRequest} ValidateEventThreatDetectionCustomModuleRequest
                          */
-                        ValidateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        ValidateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ValidateEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ValidateEventThreatDetectionCustomModuleRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -58465,7 +60768,7 @@
                         function ValidateEventThreatDetectionCustomModuleResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -58530,9 +60833,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ValidateEventThreatDetectionCustomModuleResponse.decode = function decode(reader, length, error) {
+                        ValidateEventThreatDetectionCustomModuleResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ValidateEventThreatDetectionCustomModuleResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -58540,11 +60847,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 2: {
-                                        message.errors = $root.google.cloud.securitycenter.v1.CustomModuleValidationErrors.decode(reader, reader.uint32());
+                                        message.errors = $root.google.cloud.securitycenter.v1.CustomModuleValidationErrors.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -58575,11 +60882,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ValidateEventThreatDetectionCustomModuleResponse.verify = function verify(message) {
+                        ValidateEventThreatDetectionCustomModuleResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.errors != null && message.hasOwnProperty("errors")) {
-                                var error = $root.google.cloud.securitycenter.v1.CustomModuleValidationErrors.verify(message.errors);
+                                var error = $root.google.cloud.securitycenter.v1.CustomModuleValidationErrors.verify(message.errors, long + 1);
                                 if (error)
                                     return "errors." + error;
                             }
@@ -58594,14 +60905,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ValidateEventThreatDetectionCustomModuleResponse} ValidateEventThreatDetectionCustomModuleResponse
                          */
-                        ValidateEventThreatDetectionCustomModuleResponse.fromObject = function fromObject(object) {
+                        ValidateEventThreatDetectionCustomModuleResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ValidateEventThreatDetectionCustomModuleResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ValidateEventThreatDetectionCustomModuleResponse();
                             if (object.errors != null) {
                                 if (typeof object.errors !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.ValidateEventThreatDetectionCustomModuleResponse.errors: object expected");
-                                message.errors = $root.google.cloud.securitycenter.v1.CustomModuleValidationErrors.fromObject(object.errors);
+                                message.errors = $root.google.cloud.securitycenter.v1.CustomModuleValidationErrors.fromObject(object.errors, long + 1);
                             }
                             return message;
                         };
@@ -58675,7 +60990,7 @@
                         function DeleteEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -58740,9 +61055,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        DeleteEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.DeleteEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -58754,7 +61073,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -58785,9 +61104,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        DeleteEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -58802,9 +61125,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.DeleteEventThreatDetectionCustomModuleRequest} DeleteEventThreatDetectionCustomModuleRequest
                          */
-                        DeleteEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        DeleteEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.DeleteEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.DeleteEventThreatDetectionCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -58880,7 +61207,7 @@
                         function GetEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -58945,9 +61272,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        GetEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -58959,7 +61290,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -58990,9 +61321,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        GetEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -59007,9 +61342,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetEventThreatDetectionCustomModuleRequest} GetEventThreatDetectionCustomModuleRequest
                          */
-                        GetEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        GetEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetEventThreatDetectionCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -59087,7 +61426,7 @@
                         function ListDescendantEventThreatDetectionCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -59172,9 +61511,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListDescendantEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListDescendantEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListDescendantEventThreatDetectionCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -59194,7 +61537,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -59225,9 +61568,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListDescendantEventThreatDetectionCustomModulesRequest.verify = function verify(message) {
+                        ListDescendantEventThreatDetectionCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -59248,9 +61595,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListDescendantEventThreatDetectionCustomModulesRequest} ListDescendantEventThreatDetectionCustomModulesRequest
                          */
-                        ListDescendantEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListDescendantEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListDescendantEventThreatDetectionCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListDescendantEventThreatDetectionCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -59339,7 +61690,7 @@
                             this.eventThreatDetectionCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -59415,9 +61766,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListDescendantEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListDescendantEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListDescendantEventThreatDetectionCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -59427,7 +61782,7 @@
                                 case 1: {
                                         if (!(message.eventThreatDetectionCustomModules && message.eventThreatDetectionCustomModules.length))
                                             message.eventThreatDetectionCustomModules = [];
-                                        message.eventThreatDetectionCustomModules.push($root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32()));
+                                        message.eventThreatDetectionCustomModules.push($root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -59435,7 +61790,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -59466,14 +61821,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListDescendantEventThreatDetectionCustomModulesResponse.verify = function verify(message) {
+                        ListDescendantEventThreatDetectionCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.eventThreatDetectionCustomModules != null && message.hasOwnProperty("eventThreatDetectionCustomModules")) {
                                 if (!Array.isArray(message.eventThreatDetectionCustomModules))
                                     return "eventThreatDetectionCustomModules: array expected";
                                 for (var i = 0; i < message.eventThreatDetectionCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModules[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModules[i], long + 1);
                                     if (error)
                                         return "eventThreatDetectionCustomModules." + error;
                                 }
@@ -59492,9 +61851,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListDescendantEventThreatDetectionCustomModulesResponse} ListDescendantEventThreatDetectionCustomModulesResponse
                          */
-                        ListDescendantEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListDescendantEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListDescendantEventThreatDetectionCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListDescendantEventThreatDetectionCustomModulesResponse();
                             if (object.eventThreatDetectionCustomModules) {
                                 if (!Array.isArray(object.eventThreatDetectionCustomModules))
@@ -59503,7 +61866,7 @@
                                 for (var i = 0; i < object.eventThreatDetectionCustomModules.length; ++i) {
                                     if (typeof object.eventThreatDetectionCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListDescendantEventThreatDetectionCustomModulesResponse.eventThreatDetectionCustomModules: object expected");
-                                    message.eventThreatDetectionCustomModules[i] = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModules[i]);
+                                    message.eventThreatDetectionCustomModules[i] = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -59589,7 +61952,7 @@
                         function ListEventThreatDetectionCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -59674,9 +62037,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListEventThreatDetectionCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -59696,7 +62063,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -59727,9 +62094,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEventThreatDetectionCustomModulesRequest.verify = function verify(message) {
+                        ListEventThreatDetectionCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -59750,9 +62121,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListEventThreatDetectionCustomModulesRequest} ListEventThreatDetectionCustomModulesRequest
                          */
-                        ListEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListEventThreatDetectionCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListEventThreatDetectionCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -59841,7 +62216,7 @@
                             this.eventThreatDetectionCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -59917,9 +62292,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListEventThreatDetectionCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -59929,7 +62308,7 @@
                                 case 1: {
                                         if (!(message.eventThreatDetectionCustomModules && message.eventThreatDetectionCustomModules.length))
                                             message.eventThreatDetectionCustomModules = [];
-                                        message.eventThreatDetectionCustomModules.push($root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32()));
+                                        message.eventThreatDetectionCustomModules.push($root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -59937,7 +62316,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -59968,14 +62347,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEventThreatDetectionCustomModulesResponse.verify = function verify(message) {
+                        ListEventThreatDetectionCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.eventThreatDetectionCustomModules != null && message.hasOwnProperty("eventThreatDetectionCustomModules")) {
                                 if (!Array.isArray(message.eventThreatDetectionCustomModules))
                                     return "eventThreatDetectionCustomModules: array expected";
                                 for (var i = 0; i < message.eventThreatDetectionCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModules[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModules[i], long + 1);
                                     if (error)
                                         return "eventThreatDetectionCustomModules." + error;
                                 }
@@ -59994,9 +62377,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListEventThreatDetectionCustomModulesResponse} ListEventThreatDetectionCustomModulesResponse
                          */
-                        ListEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListEventThreatDetectionCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListEventThreatDetectionCustomModulesResponse();
                             if (object.eventThreatDetectionCustomModules) {
                                 if (!Array.isArray(object.eventThreatDetectionCustomModules))
@@ -60005,7 +62392,7 @@
                                 for (var i = 0; i < object.eventThreatDetectionCustomModules.length; ++i) {
                                     if (typeof object.eventThreatDetectionCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListEventThreatDetectionCustomModulesResponse.eventThreatDetectionCustomModules: object expected");
-                                    message.eventThreatDetectionCustomModules[i] = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModules[i]);
+                                    message.eventThreatDetectionCustomModules[i] = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -60090,7 +62477,7 @@
                         function UpdateEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -60165,9 +62552,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        UpdateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.UpdateEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -60175,15 +62566,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.eventThreatDetectionCustomModule = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32());
+                                        message.eventThreatDetectionCustomModule = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -60214,16 +62605,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        UpdateEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.eventThreatDetectionCustomModule != null && message.hasOwnProperty("eventThreatDetectionCustomModule")) {
-                                var error = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModule);
+                                var error = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModule, long + 1);
                                 if (error)
                                     return "eventThreatDetectionCustomModule." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -60238,19 +62633,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.UpdateEventThreatDetectionCustomModuleRequest} UpdateEventThreatDetectionCustomModuleRequest
                          */
-                        UpdateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        UpdateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.UpdateEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.UpdateEventThreatDetectionCustomModuleRequest();
                             if (object.eventThreatDetectionCustomModule != null) {
                                 if (typeof object.eventThreatDetectionCustomModule !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateEventThreatDetectionCustomModuleRequest.eventThreatDetectionCustomModule: object expected");
-                                message.eventThreatDetectionCustomModule = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModule);
+                                message.eventThreatDetectionCustomModule = $root.google.cloud.securitycenter.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModule, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.UpdateEventThreatDetectionCustomModuleRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -60328,7 +62727,7 @@
                         function GetEffectiveEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -60393,9 +62792,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEffectiveEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        GetEffectiveEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.GetEffectiveEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -60407,7 +62810,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -60438,9 +62841,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEffectiveEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        GetEffectiveEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -60455,9 +62862,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.GetEffectiveEventThreatDetectionCustomModuleRequest} GetEffectiveEventThreatDetectionCustomModuleRequest
                          */
-                        GetEffectiveEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        GetEffectiveEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.GetEffectiveEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.GetEffectiveEventThreatDetectionCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -60535,7 +62946,7 @@
                         function ListEffectiveEventThreatDetectionCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -60620,9 +63031,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListEffectiveEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListEffectiveEventThreatDetectionCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -60642,7 +63057,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -60673,9 +63088,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesRequest.verify = function verify(message) {
+                        ListEffectiveEventThreatDetectionCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -60696,9 +63115,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListEffectiveEventThreatDetectionCustomModulesRequest} ListEffectiveEventThreatDetectionCustomModulesRequest
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListEffectiveEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListEffectiveEventThreatDetectionCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListEffectiveEventThreatDetectionCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -60787,7 +63210,7 @@
                             this.effectiveEventThreatDetectionCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -60863,9 +63286,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListEffectiveEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ListEffectiveEventThreatDetectionCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -60875,7 +63302,7 @@
                                 case 1: {
                                         if (!(message.effectiveEventThreatDetectionCustomModules && message.effectiveEventThreatDetectionCustomModules.length))
                                             message.effectiveEventThreatDetectionCustomModules = [];
-                                        message.effectiveEventThreatDetectionCustomModules.push($root.google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule.decode(reader, reader.uint32()));
+                                        message.effectiveEventThreatDetectionCustomModules.push($root.google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -60883,7 +63310,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -60914,14 +63341,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesResponse.verify = function verify(message) {
+                        ListEffectiveEventThreatDetectionCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.effectiveEventThreatDetectionCustomModules != null && message.hasOwnProperty("effectiveEventThreatDetectionCustomModules")) {
                                 if (!Array.isArray(message.effectiveEventThreatDetectionCustomModules))
                                     return "effectiveEventThreatDetectionCustomModules: array expected";
                                 for (var i = 0; i < message.effectiveEventThreatDetectionCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule.verify(message.effectiveEventThreatDetectionCustomModules[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule.verify(message.effectiveEventThreatDetectionCustomModules[i], long + 1);
                                     if (error)
                                         return "effectiveEventThreatDetectionCustomModules." + error;
                                 }
@@ -60940,9 +63371,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ListEffectiveEventThreatDetectionCustomModulesResponse} ListEffectiveEventThreatDetectionCustomModulesResponse
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListEffectiveEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ListEffectiveEventThreatDetectionCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ListEffectiveEventThreatDetectionCustomModulesResponse();
                             if (object.effectiveEventThreatDetectionCustomModules) {
                                 if (!Array.isArray(object.effectiveEventThreatDetectionCustomModules))
@@ -60951,7 +63386,7 @@
                                 for (var i = 0; i < object.effectiveEventThreatDetectionCustomModules.length; ++i) {
                                     if (typeof object.effectiveEventThreatDetectionCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ListEffectiveEventThreatDetectionCustomModulesResponse.effectiveEventThreatDetectionCustomModules: object expected");
-                                    message.effectiveEventThreatDetectionCustomModules[i] = $root.google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule.fromObject(object.effectiveEventThreatDetectionCustomModules[i]);
+                                    message.effectiveEventThreatDetectionCustomModules[i] = $root.google.cloud.securitycenter.v1.EffectiveEventThreatDetectionCustomModule.fromObject(object.effectiveEventThreatDetectionCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -61039,7 +63474,7 @@
                             this.resourceValueConfigsMetadata = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -61135,9 +63570,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Simulation.decode = function decode(reader, length, error) {
+                        Simulation.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Simulation();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -61149,13 +63588,13 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.resourceValueConfigsMetadata && message.resourceValueConfigsMetadata.length))
                                             message.resourceValueConfigsMetadata = [];
-                                        message.resourceValueConfigsMetadata.push($root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.decode(reader, reader.uint32()));
+                                        message.resourceValueConfigsMetadata.push($root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 4: {
@@ -61163,7 +63602,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -61194,14 +63633,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Simulation.verify = function verify(message) {
+                        Simulation.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
@@ -61209,7 +63652,7 @@
                                 if (!Array.isArray(message.resourceValueConfigsMetadata))
                                     return "resourceValueConfigsMetadata: array expected";
                                 for (var i = 0; i < message.resourceValueConfigsMetadata.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.verify(message.resourceValueConfigsMetadata[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.verify(message.resourceValueConfigsMetadata[i], long + 1);
                                     if (error)
                                         return "resourceValueConfigsMetadata." + error;
                                 }
@@ -61235,16 +63678,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Simulation} Simulation
                          */
-                        Simulation.fromObject = function fromObject(object) {
+                        Simulation.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Simulation)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Simulation();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1.Simulation.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.resourceValueConfigsMetadata) {
                                 if (!Array.isArray(object.resourceValueConfigsMetadata))
@@ -61253,7 +63700,7 @@
                                 for (var i = 0; i < object.resourceValueConfigsMetadata.length; ++i) {
                                     if (typeof object.resourceValueConfigsMetadata[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.Simulation.resourceValueConfigsMetadata: object expected");
-                                    message.resourceValueConfigsMetadata[i] = $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.fromObject(object.resourceValueConfigsMetadata[i]);
+                                    message.resourceValueConfigsMetadata[i] = $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.fromObject(object.resourceValueConfigsMetadata[i], long + 1);
                                 }
                             }
                             switch (object.cloudProvider) {
@@ -61373,7 +63820,7 @@
                             this.resourceValueConfigsUsed = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -61499,9 +63946,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ValuedResource.decode = function decode(reader, length, error) {
+                        ValuedResource.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ValuedResource();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -61535,11 +63986,11 @@
                                 case 7: {
                                         if (!(message.resourceValueConfigsUsed && message.resourceValueConfigsUsed.length))
                                             message.resourceValueConfigsUsed = [];
-                                        message.resourceValueConfigsUsed.push($root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.decode(reader, reader.uint32()));
+                                        message.resourceValueConfigsUsed.push($root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -61570,9 +64021,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ValuedResource.verify = function verify(message) {
+                        ValuedResource.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -61602,7 +64057,7 @@
                                 if (!Array.isArray(message.resourceValueConfigsUsed))
                                     return "resourceValueConfigsUsed: array expected";
                                 for (var i = 0; i < message.resourceValueConfigsUsed.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.verify(message.resourceValueConfigsUsed[i]);
+                                    var error = $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.verify(message.resourceValueConfigsUsed[i], long + 1);
                                     if (error)
                                         return "resourceValueConfigsUsed." + error;
                                 }
@@ -61618,9 +64073,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ValuedResource} ValuedResource
                          */
-                        ValuedResource.fromObject = function fromObject(object) {
+                        ValuedResource.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ValuedResource)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ValuedResource();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -61663,7 +64122,7 @@
                                 for (var i = 0; i < object.resourceValueConfigsUsed.length; ++i) {
                                     if (typeof object.resourceValueConfigsUsed[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1.ValuedResource.resourceValueConfigsUsed: object expected");
-                                    message.resourceValueConfigsUsed[i] = $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.fromObject(object.resourceValueConfigsUsed[i]);
+                                    message.resourceValueConfigsUsed[i] = $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata.fromObject(object.resourceValueConfigsUsed[i], long + 1);
                                 }
                             }
                             return message;
@@ -61779,7 +64238,7 @@
                         function ResourceValueConfigMetadata(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -61844,9 +64303,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResourceValueConfigMetadata.decode = function decode(reader, length, error) {
+                        ResourceValueConfigMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -61858,7 +64321,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -61889,9 +64352,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResourceValueConfigMetadata.verify = function verify(message) {
+                        ResourceValueConfigMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -61906,9 +64373,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.ResourceValueConfigMetadata} ResourceValueConfigMetadata
                          */
-                        ResourceValueConfigMetadata.fromObject = function fromObject(object) {
+                        ResourceValueConfigMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.ResourceValueConfigMetadata();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -61987,7 +64458,7 @@
                         function Source(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -62082,9 +64553,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Source.decode = function decode(reader, length, error) {
+                        Source.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1.Source();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -62108,7 +64583,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -62139,9 +64614,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Source.verify = function verify(message) {
+                        Source.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -62165,9 +64644,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1.Source} Source
                          */
-                        Source.fromObject = function fromObject(object) {
+                        Source.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1.Source)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1.Source();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -62277,7 +64760,7 @@
                             this.resourceProperties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -62395,9 +64878,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Asset.decode = function decode(reader, length, error) {
+                        Asset.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.Asset(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -62409,7 +64896,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.securityCenterProperties = $root.google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties.decode(reader, reader.uint32());
+                                        message.securityCenterProperties = $root.google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -62425,30 +64912,32 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.resourceProperties, key);
                                         message.resourceProperties[key] = value;
                                         break;
                                     }
                                 case 8: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -62479,14 +64968,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Asset.verify = function verify(message) {
+                        Asset.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.securityCenterProperties != null && message.hasOwnProperty("securityCenterProperties")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties.verify(message.securityCenterProperties);
+                                var error = $root.google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties.verify(message.securityCenterProperties, long + 1);
                                 if (error)
                                     return "securityCenterProperties." + error;
                             }
@@ -62495,23 +64988,23 @@
                                     return "resourceProperties: object expected";
                                 var key = Object.keys(message.resourceProperties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.resourceProperties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.resourceProperties[key[i]], long + 1);
                                     if (error)
                                         return "resourceProperties." + error;
                                 }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -62526,41 +65019,47 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.Asset} Asset
                          */
-                        Asset.fromObject = function fromObject(object) {
+                        Asset.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.Asset)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.Asset();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.securityCenterProperties != null) {
                                 if (typeof object.securityCenterProperties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.Asset.securityCenterProperties: object expected");
-                                message.securityCenterProperties = $root.google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties.fromObject(object.securityCenterProperties);
+                                message.securityCenterProperties = $root.google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties.fromObject(object.securityCenterProperties, long + 1);
                             }
                             if (object.resourceProperties) {
                                 if (typeof object.resourceProperties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.Asset.resourceProperties: object expected");
                                 message.resourceProperties = {};
                                 for (var keys = Object.keys(object.resourceProperties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.resourceProperties, keys[i]);
                                     if (typeof object.resourceProperties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1beta1.Asset.resourceProperties: object expected");
-                                    message.resourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.resourceProperties[keys[i]]);
+                                    message.resourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.resourceProperties[keys[i]], long + 1);
                                 }
                             }
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.Asset.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.Asset.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.Asset.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             return message;
                         };
@@ -62594,8 +65093,11 @@
                             var keys2;
                             if (message.resourceProperties && (keys2 = Object.keys(message.resourceProperties)).length) {
                                 object.resourceProperties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.resourceProperties, keys2[j]);
                                     object.resourceProperties[keys2[j]] = $root.google.protobuf.Value.toObject(message.resourceProperties[keys2[j]], options);
+                                }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks"))
                                 object.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.toObject(message.securityMarks, options);
@@ -62657,7 +65159,7 @@
                                 this.resourceOwners = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -62763,9 +65265,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            SecurityCenterProperties.decode = function decode(reader, length, error) {
+                            SecurityCenterProperties.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -62795,7 +65301,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -62826,9 +65332,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            SecurityCenterProperties.verify = function verify(message) {
+                            SecurityCenterProperties.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.resourceName != null && message.hasOwnProperty("resourceName"))
                                     if (!$util.isString(message.resourceName))
                                         return "resourceName: string expected";
@@ -62859,9 +65369,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties} SecurityCenterProperties
                              */
-                            SecurityCenterProperties.fromObject = function fromObject(object) {
+                            SecurityCenterProperties.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1beta1.Asset.SecurityCenterProperties();
                                 if (object.resourceName != null)
                                     message.resourceName = String(object.resourceName);
@@ -62972,7 +65486,7 @@
                             this.marks = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -63048,9 +65562,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityMarks.decode = function decode(reader, length, error) {
+                        SecurityMarks.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.SecurityMarks(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -63077,15 +65595,17 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.marks, key);
                                         message.marks[key] = value;
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -63116,9 +65636,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityMarks.verify = function verify(message) {
+                        SecurityMarks.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -63141,9 +65665,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.SecurityMarks} SecurityMarks
                          */
-                        SecurityMarks.fromObject = function fromObject(object) {
+                        SecurityMarks.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.SecurityMarks)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.SecurityMarks();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -63151,8 +65679,11 @@
                                 if (typeof object.marks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.SecurityMarks.marks: object expected");
                                 message.marks = {};
-                                for (var keys = Object.keys(object.marks), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.marks), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.marks, keys[i]);
                                     message.marks[keys[i]] = String(object.marks[keys[i]]);
+                                }
                             }
                             return message;
                         };
@@ -63179,8 +65710,11 @@
                             var keys2;
                             if (message.marks && (keys2 = Object.keys(message.marks)).length) {
                                 object.marks = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.marks, keys2[j]);
                                     object.marks[keys2[j]] = message.marks[keys2[j]];
+                                }
                             }
                             return object;
                         };
@@ -63244,7 +65778,7 @@
                             this.sourceProperties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -63402,9 +65936,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Finding.decode = function decode(reader, length, error) {
+                        Finding.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.Finding(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -63448,30 +65986,32 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.sourceProperties, key);
                                         message.sourceProperties[key] = value;
                                         break;
                                     }
                                 case 8: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
-                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -63502,9 +66042,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Finding.verify = function verify(message) {
+                        Finding.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -63534,23 +66078,23 @@
                                     return "sourceProperties: object expected";
                                 var key = Object.keys(message.sourceProperties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]], long + 1);
                                     if (error)
                                         return "sourceProperties." + error;
                                 }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.eventTime != null && message.hasOwnProperty("eventTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime, long + 1);
                                 if (error)
                                     return "eventTime." + error;
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
@@ -63565,9 +66109,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.Finding} Finding
                          */
-                        Finding.fromObject = function fromObject(object) {
+                        Finding.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.Finding)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.Finding();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -63604,25 +66152,27 @@
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.Finding.sourceProperties: object expected");
                                 message.sourceProperties = {};
                                 for (var keys = Object.keys(object.sourceProperties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.sourceProperties, keys[i]);
                                     if (typeof object.sourceProperties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1beta1.Finding.sourceProperties: object expected");
-                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]]);
+                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]], long + 1);
                                 }
                             }
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.Finding.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.eventTime != null) {
                                 if (typeof object.eventTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.Finding.eventTime: object expected");
-                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime);
+                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime, long + 1);
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.Finding.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             return message;
                         };
@@ -63668,8 +66218,11 @@
                             var keys2;
                             if (message.sourceProperties && (keys2 = Object.keys(message.sourceProperties)).length) {
                                 object.sourceProperties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.sourceProperties, keys2[j]);
                                     object.sourceProperties[keys2[j]] = $root.google.protobuf.Value.toObject(message.sourceProperties[keys2[j]], options);
+                                }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks"))
                                 object.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.toObject(message.securityMarks, options);
@@ -63747,7 +66300,7 @@
                         function OrganizationSettings(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -63832,9 +66385,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        OrganizationSettings.decode = function decode(reader, length, error) {
+                        OrganizationSettings.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.OrganizationSettings();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -63850,11 +66407,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig.decode(reader, reader.uint32());
+                                        message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -63885,9 +66442,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        OrganizationSettings.verify = function verify(message) {
+                        OrganizationSettings.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -63895,7 +66456,7 @@
                                 if (typeof message.enableAssetDiscovery !== "boolean")
                                     return "enableAssetDiscovery: boolean expected";
                             if (message.assetDiscoveryConfig != null && message.hasOwnProperty("assetDiscoveryConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig.verify(message.assetDiscoveryConfig);
+                                var error = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig.verify(message.assetDiscoveryConfig, long + 1);
                                 if (error)
                                     return "assetDiscoveryConfig." + error;
                             }
@@ -63910,9 +66471,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.OrganizationSettings} OrganizationSettings
                          */
-                        OrganizationSettings.fromObject = function fromObject(object) {
+                        OrganizationSettings.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.OrganizationSettings)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.OrganizationSettings();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -63921,7 +66486,7 @@
                             if (object.assetDiscoveryConfig != null) {
                                 if (typeof object.assetDiscoveryConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.OrganizationSettings.assetDiscoveryConfig: object expected");
-                                message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig.fromObject(object.assetDiscoveryConfig);
+                                message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig.fromObject(object.assetDiscoveryConfig, long + 1);
                             }
                             return message;
                         };
@@ -64001,7 +66566,7 @@
                                 this.projectIds = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -64077,9 +66642,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AssetDiscoveryConfig.decode = function decode(reader, length, error) {
+                            AssetDiscoveryConfig.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -64097,7 +66666,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -64128,9 +66697,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AssetDiscoveryConfig.verify = function verify(message) {
+                            AssetDiscoveryConfig.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.projectIds != null && message.hasOwnProperty("projectIds")) {
                                     if (!Array.isArray(message.projectIds))
                                         return "projectIds: array expected";
@@ -64158,9 +66731,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig} AssetDiscoveryConfig
                              */
-                            AssetDiscoveryConfig.fromObject = function fromObject(object) {
+                            AssetDiscoveryConfig.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.AssetDiscoveryConfig();
                                 if (object.projectIds) {
                                     if (!Array.isArray(object.projectIds))
@@ -64288,7 +66865,7 @@
                         function RunAssetDiscoveryResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -64363,9 +66940,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        RunAssetDiscoveryResponse.decode = function decode(reader, length, error) {
+                        RunAssetDiscoveryResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.RunAssetDiscoveryResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -64377,11 +66958,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -64412,9 +66993,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        RunAssetDiscoveryResponse.verify = function verify(message) {
+                        RunAssetDiscoveryResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.state != null && message.hasOwnProperty("state"))
                                 switch (message.state) {
                                 default:
@@ -64426,7 +67011,7 @@
                                     break;
                                 }
                             if (message.duration != null && message.hasOwnProperty("duration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.duration);
+                                var error = $root.google.protobuf.Duration.verify(message.duration, long + 1);
                                 if (error)
                                     return "duration." + error;
                             }
@@ -64441,9 +67026,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.RunAssetDiscoveryResponse} RunAssetDiscoveryResponse
                          */
-                        RunAssetDiscoveryResponse.fromObject = function fromObject(object) {
+                        RunAssetDiscoveryResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.RunAssetDiscoveryResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.RunAssetDiscoveryResponse();
                             switch (object.state) {
                             default:
@@ -64472,7 +67061,7 @@
                             if (object.duration != null) {
                                 if (typeof object.duration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.RunAssetDiscoveryResponse.duration: object expected");
-                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration);
+                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration, long + 1);
                             }
                             return message;
                         };
@@ -65199,7 +67788,7 @@
                         function CreateFindingRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -65284,9 +67873,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateFindingRequest.decode = function decode(reader, length, error) {
+                        CreateFindingRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.CreateFindingRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -65302,11 +67895,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.finding = $root.google.cloud.securitycenter.v1beta1.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v1beta1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -65337,9 +67930,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateFindingRequest.verify = function verify(message) {
+                        CreateFindingRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -65347,7 +67944,7 @@
                                 if (!$util.isString(message.findingId))
                                     return "findingId: string expected";
                             if (message.finding != null && message.hasOwnProperty("finding")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.Finding.verify(message.finding);
+                                var error = $root.google.cloud.securitycenter.v1beta1.Finding.verify(message.finding, long + 1);
                                 if (error)
                                     return "finding." + error;
                             }
@@ -65362,9 +67959,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.CreateFindingRequest} CreateFindingRequest
                          */
-                        CreateFindingRequest.fromObject = function fromObject(object) {
+                        CreateFindingRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.CreateFindingRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.CreateFindingRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -65373,7 +67974,7 @@
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.CreateFindingRequest.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v1beta1.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v1beta1.Finding.fromObject(object.finding, long + 1);
                             }
                             return message;
                         };
@@ -65455,7 +68056,7 @@
                         function CreateSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -65530,9 +68131,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateSourceRequest.decode = function decode(reader, length, error) {
+                        CreateSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.CreateSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -65544,11 +68149,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.source = $root.google.cloud.securitycenter.v1beta1.Source.decode(reader, reader.uint32());
+                                        message.source = $root.google.cloud.securitycenter.v1beta1.Source.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -65579,14 +68184,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateSourceRequest.verify = function verify(message) {
+                        CreateSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.source != null && message.hasOwnProperty("source")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.Source.verify(message.source);
+                                var error = $root.google.cloud.securitycenter.v1beta1.Source.verify(message.source, long + 1);
                                 if (error)
                                     return "source." + error;
                             }
@@ -65601,16 +68210,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.CreateSourceRequest} CreateSourceRequest
                          */
-                        CreateSourceRequest.fromObject = function fromObject(object) {
+                        CreateSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.CreateSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.CreateSourceRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.source != null) {
                                 if (typeof object.source !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.CreateSourceRequest.source: object expected");
-                                message.source = $root.google.cloud.securitycenter.v1beta1.Source.fromObject(object.source);
+                                message.source = $root.google.cloud.securitycenter.v1beta1.Source.fromObject(object.source, long + 1);
                             }
                             return message;
                         };
@@ -65688,7 +68301,7 @@
                         function GetOrganizationSettingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -65753,9 +68366,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetOrganizationSettingsRequest.decode = function decode(reader, length, error) {
+                        GetOrganizationSettingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.GetOrganizationSettingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -65767,7 +68384,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -65798,9 +68415,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetOrganizationSettingsRequest.verify = function verify(message) {
+                        GetOrganizationSettingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -65815,9 +68436,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.GetOrganizationSettingsRequest} GetOrganizationSettingsRequest
                          */
-                        GetOrganizationSettingsRequest.fromObject = function fromObject(object) {
+                        GetOrganizationSettingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.GetOrganizationSettingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.GetOrganizationSettingsRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -65893,7 +68518,7 @@
                         function GetSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -65958,9 +68583,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetSourceRequest.decode = function decode(reader, length, error) {
+                        GetSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.GetSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -65972,7 +68601,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -66003,9 +68632,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetSourceRequest.verify = function verify(message) {
+                        GetSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -66020,9 +68653,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.GetSourceRequest} GetSourceRequest
                          */
-                        GetSourceRequest.fromObject = function fromObject(object) {
+                        GetSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.GetSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.GetSourceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -66104,7 +68741,7 @@
                         function GroupAssetsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -66229,9 +68866,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupAssetsRequest.decode = function decode(reader, length, error) {
+                        GroupAssetsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.GroupAssetsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -66251,11 +68892,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -66267,7 +68908,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -66298,9 +68939,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupAssetsRequest.verify = function verify(message) {
+                        GroupAssetsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -66311,12 +68956,12 @@
                                 if (!$util.isString(message.groupBy))
                                     return "groupBy: string expected";
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -66337,9 +68982,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.GroupAssetsRequest} GroupAssetsRequest
                          */
-                        GroupAssetsRequest.fromObject = function fromObject(object) {
+                        GroupAssetsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.GroupAssetsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.GroupAssetsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -66350,12 +68999,12 @@
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.GroupAssetsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.GroupAssetsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -66455,7 +69104,7 @@
                             this.groupByResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -66541,9 +69190,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupAssetsResponse.decode = function decode(reader, length, error) {
+                        GroupAssetsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.GroupAssetsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -66553,11 +69206,11 @@
                                 case 1: {
                                         if (!(message.groupByResults && message.groupByResults.length))
                                             message.groupByResults = [];
-                                        message.groupByResults.push($root.google.cloud.securitycenter.v1beta1.GroupResult.decode(reader, reader.uint32()));
+                                        message.groupByResults.push($root.google.cloud.securitycenter.v1beta1.GroupResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -66565,7 +69218,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -66596,20 +69249,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupAssetsResponse.verify = function verify(message) {
+                        GroupAssetsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.groupByResults != null && message.hasOwnProperty("groupByResults")) {
                                 if (!Array.isArray(message.groupByResults))
                                     return "groupByResults: array expected";
                                 for (var i = 0; i < message.groupByResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1beta1.GroupResult.verify(message.groupByResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1beta1.GroupResult.verify(message.groupByResults[i], long + 1);
                                     if (error)
                                         return "groupByResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -66627,9 +69284,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.GroupAssetsResponse} GroupAssetsResponse
                          */
-                        GroupAssetsResponse.fromObject = function fromObject(object) {
+                        GroupAssetsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.GroupAssetsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.GroupAssetsResponse();
                             if (object.groupByResults) {
                                 if (!Array.isArray(object.groupByResults))
@@ -66638,13 +69299,13 @@
                                 for (var i = 0; i < object.groupByResults.length; ++i) {
                                     if (typeof object.groupByResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1beta1.GroupAssetsResponse.groupByResults: object expected");
-                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1beta1.GroupResult.fromObject(object.groupByResults[i]);
+                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1beta1.GroupResult.fromObject(object.groupByResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.GroupAssetsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -66736,7 +69397,7 @@
                         function GroupFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -66851,9 +69512,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupFindingsRequest.decode = function decode(reader, length, error) {
+                        GroupFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.GroupFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -66873,7 +69538,7 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
@@ -66885,7 +69550,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -66916,9 +69581,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupFindingsRequest.verify = function verify(message) {
+                        GroupFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -66929,7 +69598,7 @@
                                 if (!$util.isString(message.groupBy))
                                     return "groupBy: string expected";
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -66950,9 +69619,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.GroupFindingsRequest} GroupFindingsRequest
                          */
-                        GroupFindingsRequest.fromObject = function fromObject(object) {
+                        GroupFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.GroupFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.GroupFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -66963,7 +69636,7 @@
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.GroupFindingsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -67060,7 +69733,7 @@
                             this.groupByResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -67146,9 +69819,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupFindingsResponse.decode = function decode(reader, length, error) {
+                        GroupFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.GroupFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -67158,11 +69835,11 @@
                                 case 1: {
                                         if (!(message.groupByResults && message.groupByResults.length))
                                             message.groupByResults = [];
-                                        message.groupByResults.push($root.google.cloud.securitycenter.v1beta1.GroupResult.decode(reader, reader.uint32()));
+                                        message.groupByResults.push($root.google.cloud.securitycenter.v1beta1.GroupResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -67170,7 +69847,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -67201,20 +69878,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupFindingsResponse.verify = function verify(message) {
+                        GroupFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.groupByResults != null && message.hasOwnProperty("groupByResults")) {
                                 if (!Array.isArray(message.groupByResults))
                                     return "groupByResults: array expected";
                                 for (var i = 0; i < message.groupByResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1beta1.GroupResult.verify(message.groupByResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1beta1.GroupResult.verify(message.groupByResults[i], long + 1);
                                     if (error)
                                         return "groupByResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -67232,9 +69913,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.GroupFindingsResponse} GroupFindingsResponse
                          */
-                        GroupFindingsResponse.fromObject = function fromObject(object) {
+                        GroupFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.GroupFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.GroupFindingsResponse();
                             if (object.groupByResults) {
                                 if (!Array.isArray(object.groupByResults))
@@ -67243,13 +69928,13 @@
                                 for (var i = 0; i < object.groupByResults.length; ++i) {
                                     if (typeof object.groupByResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1beta1.GroupFindingsResponse.groupByResults: object expected");
-                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1beta1.GroupResult.fromObject(object.groupByResults[i]);
+                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1beta1.GroupResult.fromObject(object.groupByResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.GroupFindingsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -67338,7 +70023,7 @@
                             this.properties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -67416,9 +70101,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupResult.decode = function decode(reader, length, error) {
+                        GroupResult.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.GroupResult(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -67438,13 +70127,15 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.properties, key);
                                         message.properties[key] = value;
                                         break;
                                     }
@@ -67453,7 +70144,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -67484,15 +70175,19 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupResult.verify = function verify(message) {
+                        GroupResult.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.properties != null && message.hasOwnProperty("properties")) {
                                 if (!$util.isObject(message.properties))
                                     return "properties: object expected";
                                 var key = Object.keys(message.properties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.properties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.properties[key[i]], long + 1);
                                     if (error)
                                         return "properties." + error;
                                 }
@@ -67511,18 +70206,24 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.GroupResult} GroupResult
                          */
-                        GroupResult.fromObject = function fromObject(object) {
+                        GroupResult.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.GroupResult)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.GroupResult();
                             if (object.properties) {
                                 if (typeof object.properties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.GroupResult.properties: object expected");
                                 message.properties = {};
                                 for (var keys = Object.keys(object.properties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.properties, keys[i]);
                                     if (typeof object.properties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1beta1.GroupResult.properties: object expected");
-                                    message.properties[keys[i]] = $root.google.protobuf.Value.fromObject(object.properties[keys[i]]);
+                                    message.properties[keys[i]] = $root.google.protobuf.Value.fromObject(object.properties[keys[i]], long + 1);
                                 }
                             }
                             if (object.count != null)
@@ -67561,8 +70262,11 @@
                             var keys2;
                             if (message.properties && (keys2 = Object.keys(message.properties)).length) {
                                 object.properties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.properties, keys2[j]);
                                     object.properties[keys2[j]] = $root.google.protobuf.Value.toObject(message.properties[keys2[j]], options);
+                                }
                             }
                             if (message.count != null && message.hasOwnProperty("count"))
                                 if (typeof message.count === "number")
@@ -67623,7 +70327,7 @@
                         function ListSourcesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -67708,9 +70412,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSourcesRequest.decode = function decode(reader, length, error) {
+                        ListSourcesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.ListSourcesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -67730,7 +70438,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -67761,9 +70469,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSourcesRequest.verify = function verify(message) {
+                        ListSourcesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -67784,9 +70496,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.ListSourcesRequest} ListSourcesRequest
                          */
-                        ListSourcesRequest.fromObject = function fromObject(object) {
+                        ListSourcesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.ListSourcesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.ListSourcesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -67875,7 +70591,7 @@
                             this.sources = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -67951,9 +70667,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSourcesResponse.decode = function decode(reader, length, error) {
+                        ListSourcesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.ListSourcesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -67963,7 +70683,7 @@
                                 case 1: {
                                         if (!(message.sources && message.sources.length))
                                             message.sources = [];
-                                        message.sources.push($root.google.cloud.securitycenter.v1beta1.Source.decode(reader, reader.uint32()));
+                                        message.sources.push($root.google.cloud.securitycenter.v1beta1.Source.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -67971,7 +70691,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -68002,14 +70722,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSourcesResponse.verify = function verify(message) {
+                        ListSourcesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.sources != null && message.hasOwnProperty("sources")) {
                                 if (!Array.isArray(message.sources))
                                     return "sources: array expected";
                                 for (var i = 0; i < message.sources.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1beta1.Source.verify(message.sources[i]);
+                                    var error = $root.google.cloud.securitycenter.v1beta1.Source.verify(message.sources[i], long + 1);
                                     if (error)
                                         return "sources." + error;
                                 }
@@ -68028,9 +70752,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.ListSourcesResponse} ListSourcesResponse
                          */
-                        ListSourcesResponse.fromObject = function fromObject(object) {
+                        ListSourcesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.ListSourcesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.ListSourcesResponse();
                             if (object.sources) {
                                 if (!Array.isArray(object.sources))
@@ -68039,7 +70767,7 @@
                                 for (var i = 0; i < object.sources.length; ++i) {
                                     if (typeof object.sources[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1beta1.ListSourcesResponse.sources: object expected");
-                                    message.sources[i] = $root.google.cloud.securitycenter.v1beta1.Source.fromObject(object.sources[i]);
+                                    message.sources[i] = $root.google.cloud.securitycenter.v1beta1.Source.fromObject(object.sources[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -68130,7 +70858,7 @@
                         function ListAssetsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -68265,9 +70993,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAssetsRequest.decode = function decode(reader, length, error) {
+                        ListAssetsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.ListAssetsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -68287,15 +71019,15 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
-                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
@@ -68307,7 +71039,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -68338,9 +71070,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAssetsRequest.verify = function verify(message) {
+                        ListAssetsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -68351,17 +71087,17 @@
                                 if (!$util.isString(message.orderBy))
                                     return "orderBy: string expected";
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
                             if (message.fieldMask != null && message.hasOwnProperty("fieldMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask, long + 1);
                                 if (error)
                                     return "fieldMask." + error;
                             }
@@ -68382,9 +71118,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.ListAssetsRequest} ListAssetsRequest
                          */
-                        ListAssetsRequest.fromObject = function fromObject(object) {
+                        ListAssetsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.ListAssetsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.ListAssetsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -68395,17 +71135,17 @@
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.ListAssetsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.ListAssetsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.fieldMask != null) {
                                 if (typeof object.fieldMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.ListAssetsRequest.fieldMask: object expected");
-                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask);
+                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -68509,7 +71249,7 @@
                             this.listAssetsResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -68605,9 +71345,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAssetsResponse.decode = function decode(reader, length, error) {
+                        ListAssetsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -68617,11 +71361,11 @@
                                 case 1: {
                                         if (!(message.listAssetsResults && message.listAssetsResults.length))
                                             message.listAssetsResults = [];
-                                        message.listAssetsResults.push($root.google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult.decode(reader, reader.uint32()));
+                                        message.listAssetsResults.push($root.google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -68633,7 +71377,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -68664,20 +71408,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAssetsResponse.verify = function verify(message) {
+                        ListAssetsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.listAssetsResults != null && message.hasOwnProperty("listAssetsResults")) {
                                 if (!Array.isArray(message.listAssetsResults))
                                     return "listAssetsResults: array expected";
                                 for (var i = 0; i < message.listAssetsResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult.verify(message.listAssetsResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult.verify(message.listAssetsResults[i], long + 1);
                                     if (error)
                                         return "listAssetsResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -68698,9 +71446,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.ListAssetsResponse} ListAssetsResponse
                          */
-                        ListAssetsResponse.fromObject = function fromObject(object) {
+                        ListAssetsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse();
                             if (object.listAssetsResults) {
                                 if (!Array.isArray(object.listAssetsResults))
@@ -68709,13 +71461,13 @@
                                 for (var i = 0; i < object.listAssetsResults.length; ++i) {
                                     if (typeof object.listAssetsResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1beta1.ListAssetsResponse.listAssetsResults: object expected");
-                                    message.listAssetsResults[i] = $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult.fromObject(object.listAssetsResults[i]);
+                                    message.listAssetsResults[i] = $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult.fromObject(object.listAssetsResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.ListAssetsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -68805,7 +71557,7 @@
                             function ListAssetsResult(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -68880,9 +71632,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ListAssetsResult.decode = function decode(reader, length, error) {
+                            ListAssetsResult.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -68890,7 +71646,7 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.asset = $root.google.cloud.securitycenter.v1beta1.Asset.decode(reader, reader.uint32());
+                                            message.asset = $root.google.cloud.securitycenter.v1beta1.Asset.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 2: {
@@ -68898,7 +71654,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -68929,11 +71685,15 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ListAssetsResult.verify = function verify(message) {
+                            ListAssetsResult.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.asset != null && message.hasOwnProperty("asset")) {
-                                    var error = $root.google.cloud.securitycenter.v1beta1.Asset.verify(message.asset);
+                                    var error = $root.google.cloud.securitycenter.v1beta1.Asset.verify(message.asset, long + 1);
                                     if (error)
                                         return "asset." + error;
                                 }
@@ -68959,14 +71719,18 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult} ListAssetsResult
                              */
-                            ListAssetsResult.fromObject = function fromObject(object) {
+                            ListAssetsResult.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult();
                                 if (object.asset != null) {
                                     if (typeof object.asset !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1beta1.ListAssetsResponse.ListAssetsResult.asset: object expected");
-                                    message.asset = $root.google.cloud.securitycenter.v1beta1.Asset.fromObject(object.asset);
+                                    message.asset = $root.google.cloud.securitycenter.v1beta1.Asset.fromObject(object.asset, long + 1);
                                 }
                                 switch (object.state) {
                                 default:
@@ -69101,7 +71865,7 @@
                         function ListFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -69226,9 +71990,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListFindingsRequest.decode = function decode(reader, length, error) {
+                        ListFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.ListFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -69248,11 +72016,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
@@ -69264,7 +72032,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -69295,9 +72063,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListFindingsRequest.verify = function verify(message) {
+                        ListFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -69308,12 +72080,12 @@
                                 if (!$util.isString(message.orderBy))
                                     return "orderBy: string expected";
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
                             if (message.fieldMask != null && message.hasOwnProperty("fieldMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask, long + 1);
                                 if (error)
                                     return "fieldMask." + error;
                             }
@@ -69334,9 +72106,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.ListFindingsRequest} ListFindingsRequest
                          */
-                        ListFindingsRequest.fromObject = function fromObject(object) {
+                        ListFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.ListFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.ListFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -69347,12 +72123,12 @@
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.ListFindingsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.fieldMask != null) {
                                 if (typeof object.fieldMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.ListFindingsRequest.fieldMask: object expected");
-                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask);
+                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -69453,7 +72229,7 @@
                             this.findings = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -69549,9 +72325,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListFindingsResponse.decode = function decode(reader, length, error) {
+                        ListFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.ListFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -69561,11 +72341,11 @@
                                 case 1: {
                                         if (!(message.findings && message.findings.length))
                                             message.findings = [];
-                                        message.findings.push($root.google.cloud.securitycenter.v1beta1.Finding.decode(reader, reader.uint32()));
+                                        message.findings.push($root.google.cloud.securitycenter.v1beta1.Finding.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -69577,7 +72357,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -69608,20 +72388,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListFindingsResponse.verify = function verify(message) {
+                        ListFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.findings != null && message.hasOwnProperty("findings")) {
                                 if (!Array.isArray(message.findings))
                                     return "findings: array expected";
                                 for (var i = 0; i < message.findings.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1beta1.Finding.verify(message.findings[i]);
+                                    var error = $root.google.cloud.securitycenter.v1beta1.Finding.verify(message.findings[i], long + 1);
                                     if (error)
                                         return "findings." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -69642,9 +72426,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.ListFindingsResponse} ListFindingsResponse
                          */
-                        ListFindingsResponse.fromObject = function fromObject(object) {
+                        ListFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.ListFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.ListFindingsResponse();
                             if (object.findings) {
                                 if (!Array.isArray(object.findings))
@@ -69653,13 +72441,13 @@
                                 for (var i = 0; i < object.findings.length; ++i) {
                                     if (typeof object.findings[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1beta1.ListFindingsResponse.findings: object expected");
-                                    message.findings[i] = $root.google.cloud.securitycenter.v1beta1.Finding.fromObject(object.findings[i]);
+                                    message.findings[i] = $root.google.cloud.securitycenter.v1beta1.Finding.fromObject(object.findings[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.ListFindingsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -69753,7 +72541,7 @@
                         function SetFindingStateRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -69838,9 +72626,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SetFindingStateRequest.decode = function decode(reader, length, error) {
+                        SetFindingStateRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.SetFindingStateRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -69856,11 +72648,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -69891,9 +72683,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SetFindingStateRequest.verify = function verify(message) {
+                        SetFindingStateRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -69907,7 +72703,7 @@
                                     break;
                                 }
                             if (message.startTime != null && message.hasOwnProperty("startTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1);
                                 if (error)
                                     return "startTime." + error;
                             }
@@ -69922,9 +72718,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.SetFindingStateRequest} SetFindingStateRequest
                          */
-                        SetFindingStateRequest.fromObject = function fromObject(object) {
+                        SetFindingStateRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.SetFindingStateRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.SetFindingStateRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -69951,7 +72751,7 @@
                             if (object.startTime != null) {
                                 if (typeof object.startTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.SetFindingStateRequest.startTime: object expected");
-                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1);
                             }
                             return message;
                         };
@@ -70032,7 +72832,7 @@
                         function RunAssetDiscoveryRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -70097,9 +72897,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        RunAssetDiscoveryRequest.decode = function decode(reader, length, error) {
+                        RunAssetDiscoveryRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.RunAssetDiscoveryRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -70111,7 +72915,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -70142,9 +72946,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        RunAssetDiscoveryRequest.verify = function verify(message) {
+                        RunAssetDiscoveryRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -70159,9 +72967,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.RunAssetDiscoveryRequest} RunAssetDiscoveryRequest
                          */
-                        RunAssetDiscoveryRequest.fromObject = function fromObject(object) {
+                        RunAssetDiscoveryRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.RunAssetDiscoveryRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.RunAssetDiscoveryRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -70238,7 +73050,7 @@
                         function UpdateFindingRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -70313,9 +73125,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateFindingRequest.decode = function decode(reader, length, error) {
+                        UpdateFindingRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.UpdateFindingRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -70323,15 +73139,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.finding = $root.google.cloud.securitycenter.v1beta1.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v1beta1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -70362,16 +73178,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateFindingRequest.verify = function verify(message) {
+                        UpdateFindingRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.finding != null && message.hasOwnProperty("finding")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.Finding.verify(message.finding);
+                                var error = $root.google.cloud.securitycenter.v1beta1.Finding.verify(message.finding, long + 1);
                                 if (error)
                                     return "finding." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -70386,19 +73206,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.UpdateFindingRequest} UpdateFindingRequest
                          */
-                        UpdateFindingRequest.fromObject = function fromObject(object) {
+                        UpdateFindingRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.UpdateFindingRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.UpdateFindingRequest();
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.UpdateFindingRequest.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v1beta1.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v1beta1.Finding.fromObject(object.finding, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.UpdateFindingRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -70477,7 +73301,7 @@
                         function UpdateOrganizationSettingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -70552,9 +73376,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateOrganizationSettingsRequest.decode = function decode(reader, length, error) {
+                        UpdateOrganizationSettingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.UpdateOrganizationSettingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -70562,15 +73390,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.organizationSettings = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.decode(reader, reader.uint32());
+                                        message.organizationSettings = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -70601,16 +73429,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateOrganizationSettingsRequest.verify = function verify(message) {
+                        UpdateOrganizationSettingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.organizationSettings != null && message.hasOwnProperty("organizationSettings")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.verify(message.organizationSettings);
+                                var error = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.verify(message.organizationSettings, long + 1);
                                 if (error)
                                     return "organizationSettings." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -70625,19 +73457,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.UpdateOrganizationSettingsRequest} UpdateOrganizationSettingsRequest
                          */
-                        UpdateOrganizationSettingsRequest.fromObject = function fromObject(object) {
+                        UpdateOrganizationSettingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.UpdateOrganizationSettingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.UpdateOrganizationSettingsRequest();
                             if (object.organizationSettings != null) {
                                 if (typeof object.organizationSettings !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.UpdateOrganizationSettingsRequest.organizationSettings: object expected");
-                                message.organizationSettings = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.fromObject(object.organizationSettings);
+                                message.organizationSettings = $root.google.cloud.securitycenter.v1beta1.OrganizationSettings.fromObject(object.organizationSettings, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.UpdateOrganizationSettingsRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -70716,7 +73552,7 @@
                         function UpdateSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -70791,9 +73627,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSourceRequest.decode = function decode(reader, length, error) {
+                        UpdateSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.UpdateSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -70801,15 +73641,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.source = $root.google.cloud.securitycenter.v1beta1.Source.decode(reader, reader.uint32());
+                                        message.source = $root.google.cloud.securitycenter.v1beta1.Source.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -70840,16 +73680,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSourceRequest.verify = function verify(message) {
+                        UpdateSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.source != null && message.hasOwnProperty("source")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.Source.verify(message.source);
+                                var error = $root.google.cloud.securitycenter.v1beta1.Source.verify(message.source, long + 1);
                                 if (error)
                                     return "source." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -70864,19 +73708,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.UpdateSourceRequest} UpdateSourceRequest
                          */
-                        UpdateSourceRequest.fromObject = function fromObject(object) {
+                        UpdateSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.UpdateSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.UpdateSourceRequest();
                             if (object.source != null) {
                                 if (typeof object.source !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.UpdateSourceRequest.source: object expected");
-                                message.source = $root.google.cloud.securitycenter.v1beta1.Source.fromObject(object.source);
+                                message.source = $root.google.cloud.securitycenter.v1beta1.Source.fromObject(object.source, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.UpdateSourceRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -70956,7 +73804,7 @@
                         function UpdateSecurityMarksRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -71041,9 +73889,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSecurityMarksRequest.decode = function decode(reader, length, error) {
+                        UpdateSecurityMarksRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.UpdateSecurityMarksRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -71051,19 +73903,19 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -71094,21 +73946,25 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSecurityMarksRequest.verify = function verify(message) {
+                        UpdateSecurityMarksRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
                             if (message.startTime != null && message.hasOwnProperty("startTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1);
                                 if (error)
                                     return "startTime." + error;
                             }
@@ -71123,24 +73979,28 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.UpdateSecurityMarksRequest} UpdateSecurityMarksRequest
                          */
-                        UpdateSecurityMarksRequest.fromObject = function fromObject(object) {
+                        UpdateSecurityMarksRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.UpdateSecurityMarksRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.UpdateSecurityMarksRequest();
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.UpdateSecurityMarksRequest.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v1beta1.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.UpdateSecurityMarksRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             if (object.startTime != null) {
                                 if (typeof object.startTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1beta1.UpdateSecurityMarksRequest.startTime: object expected");
-                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1);
                             }
                             return message;
                         };
@@ -71223,7 +74083,7 @@
                         function Source(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -71308,9 +74168,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Source.decode = function decode(reader, length, error) {
+                        Source.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1beta1.Source();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -71330,7 +74194,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -71361,9 +74225,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Source.verify = function verify(message) {
+                        Source.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -71384,9 +74252,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1beta1.Source} Source
                          */
-                        Source.fromObject = function fromObject(object) {
+                        Source.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1beta1.Source)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1beta1.Source();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -71493,7 +74365,7 @@
                             this.resourceProperties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -71631,9 +74503,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Asset.decode = function decode(reader, length, error) {
+                        Asset.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.Asset(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -71645,7 +74521,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.securityCenterProperties = $root.google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties.decode(reader, reader.uint32());
+                                        message.securityCenterProperties = $root.google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -71661,30 +74537,32 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.resourceProperties, key);
                                         message.resourceProperties[key] = value;
                                         break;
                                     }
                                 case 8: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 11: {
-                                        message.iamPolicy = $root.google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy.decode(reader, reader.uint32());
+                                        message.iamPolicy = $root.google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 13: {
@@ -71692,7 +74570,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -71723,14 +74601,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Asset.verify = function verify(message) {
+                        Asset.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.securityCenterProperties != null && message.hasOwnProperty("securityCenterProperties")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties.verify(message.securityCenterProperties);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties.verify(message.securityCenterProperties, long + 1);
                                 if (error)
                                     return "securityCenterProperties." + error;
                             }
@@ -71739,28 +74621,28 @@
                                     return "resourceProperties: object expected";
                                 var key = Object.keys(message.resourceProperties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.resourceProperties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.resourceProperties[key[i]], long + 1);
                                     if (error)
                                         return "resourceProperties." + error;
                                 }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
                             if (message.iamPolicy != null && message.hasOwnProperty("iamPolicy")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy.verify(message.iamPolicy);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy.verify(message.iamPolicy, long + 1);
                                 if (error)
                                     return "iamPolicy." + error;
                             }
@@ -71778,46 +74660,52 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.Asset} Asset
                          */
-                        Asset.fromObject = function fromObject(object) {
+                        Asset.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.Asset)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.Asset();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.securityCenterProperties != null) {
                                 if (typeof object.securityCenterProperties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Asset.securityCenterProperties: object expected");
-                                message.securityCenterProperties = $root.google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties.fromObject(object.securityCenterProperties);
+                                message.securityCenterProperties = $root.google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties.fromObject(object.securityCenterProperties, long + 1);
                             }
                             if (object.resourceProperties) {
                                 if (typeof object.resourceProperties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Asset.resourceProperties: object expected");
                                 message.resourceProperties = {};
                                 for (var keys = Object.keys(object.resourceProperties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.resourceProperties, keys[i]);
                                     if (typeof object.resourceProperties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.Asset.resourceProperties: object expected");
-                                    message.resourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.resourceProperties[keys[i]]);
+                                    message.resourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.resourceProperties[keys[i]], long + 1);
                                 }
                             }
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Asset.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Asset.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Asset.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.iamPolicy != null) {
                                 if (typeof object.iamPolicy !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Asset.iamPolicy: object expected");
-                                message.iamPolicy = $root.google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy.fromObject(object.iamPolicy);
+                                message.iamPolicy = $root.google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy.fromObject(object.iamPolicy, long + 1);
                             }
                             if (object.canonicalName != null)
                                 message.canonicalName = String(object.canonicalName);
@@ -71855,8 +74743,11 @@
                             var keys2;
                             if (message.resourceProperties && (keys2 = Object.keys(message.resourceProperties)).length) {
                                 object.resourceProperties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.resourceProperties, keys2[j]);
                                     object.resourceProperties[keys2[j]] = $root.google.protobuf.Value.toObject(message.resourceProperties[keys2[j]], options);
+                                }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks"))
                                 object.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.toObject(message.securityMarks, options);
@@ -71927,7 +74818,7 @@
                                 this.folders = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -72074,9 +74965,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            SecurityCenterProperties.decode = function decode(reader, length, error) {
+                            SecurityCenterProperties.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -72120,11 +75015,11 @@
                                     case 10: {
                                             if (!(message.folders && message.folders.length))
                                                 message.folders = [];
-                                            message.folders.push($root.google.cloud.securitycenter.v1p1beta1.Folder.decode(reader, reader.uint32()));
+                                            message.folders.push($root.google.cloud.securitycenter.v1p1beta1.Folder.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -72155,9 +75050,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            SecurityCenterProperties.verify = function verify(message) {
+                            SecurityCenterProperties.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.resourceName != null && message.hasOwnProperty("resourceName"))
                                     if (!$util.isString(message.resourceName))
                                         return "resourceName: string expected";
@@ -72190,7 +75089,7 @@
                                     if (!Array.isArray(message.folders))
                                         return "folders: array expected";
                                     for (var i = 0; i < message.folders.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v1p1beta1.Folder.verify(message.folders[i]);
+                                        var error = $root.google.cloud.securitycenter.v1p1beta1.Folder.verify(message.folders[i], long + 1);
                                         if (error)
                                             return "folders." + error;
                                     }
@@ -72206,9 +75105,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties} SecurityCenterProperties
                              */
-                            SecurityCenterProperties.fromObject = function fromObject(object) {
+                            SecurityCenterProperties.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties();
                                 if (object.resourceName != null)
                                     message.resourceName = String(object.resourceName);
@@ -72238,7 +75141,7 @@
                                     for (var i = 0; i < object.folders.length; ++i) {
                                         if (typeof object.folders[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v1p1beta1.Asset.SecurityCenterProperties.folders: object expected");
-                                        message.folders[i] = $root.google.cloud.securitycenter.v1p1beta1.Folder.fromObject(object.folders[i]);
+                                        message.folders[i] = $root.google.cloud.securitycenter.v1p1beta1.Folder.fromObject(object.folders[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -72346,7 +75249,7 @@
                             function IamPolicy(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -72411,9 +75314,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            IamPolicy.decode = function decode(reader, length, error) {
+                            IamPolicy.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -72425,7 +75332,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -72456,9 +75363,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            IamPolicy.verify = function verify(message) {
+                            IamPolicy.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.policyBlob != null && message.hasOwnProperty("policyBlob"))
                                     if (!$util.isString(message.policyBlob))
                                         return "policyBlob: string expected";
@@ -72473,9 +75384,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy} IamPolicy
                              */
-                            IamPolicy.fromObject = function fromObject(object) {
+                            IamPolicy.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1p1beta1.Asset.IamPolicy();
                                 if (object.policyBlob != null)
                                     message.policyBlob = String(object.policyBlob);
@@ -72555,7 +75470,7 @@
                         function Folder(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -72630,9 +75545,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Folder.decode = function decode(reader, length, error) {
+                        Folder.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.Folder();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -72648,7 +75567,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -72679,9 +75598,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Folder.verify = function verify(message) {
+                        Folder.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.resourceFolder != null && message.hasOwnProperty("resourceFolder"))
                                 if (!$util.isString(message.resourceFolder))
                                     return "resourceFolder: string expected";
@@ -72699,9 +75622,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.Folder} Folder
                          */
-                        Folder.fromObject = function fromObject(object) {
+                        Folder.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.Folder)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.Folder();
                             if (object.resourceFolder != null)
                                 message.resourceFolder = String(object.resourceFolder);
@@ -72786,7 +75713,7 @@
                             this.marks = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -72872,9 +75799,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityMarks.decode = function decode(reader, length, error) {
+                        SecurityMarks.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -72901,10 +75832,12 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.marks, key);
                                         message.marks[key] = value;
                                         break;
                                     }
@@ -72913,7 +75846,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -72944,9 +75877,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityMarks.verify = function verify(message) {
+                        SecurityMarks.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -72972,9 +75909,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.SecurityMarks} SecurityMarks
                          */
-                        SecurityMarks.fromObject = function fromObject(object) {
+                        SecurityMarks.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -72982,8 +75923,11 @@
                                 if (typeof object.marks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.SecurityMarks.marks: object expected");
                                 message.marks = {};
-                                for (var keys = Object.keys(object.marks), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.marks), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.marks, keys[i]);
                                     message.marks[keys[i]] = String(object.marks[keys[i]]);
+                                }
                             }
                             if (object.canonicalName != null)
                                 message.canonicalName = String(object.canonicalName);
@@ -73014,8 +75958,11 @@
                             var keys2;
                             if (message.marks && (keys2 = Object.keys(message.marks)).length) {
                                 object.marks = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.marks, keys2[j]);
                                     object.marks[keys2[j]] = message.marks[keys2[j]];
+                                }
                             }
                             if (message.canonicalName != null && message.hasOwnProperty("canonicalName"))
                                 object.canonicalName = message.canonicalName;
@@ -73083,7 +76030,7 @@
                             this.sourceProperties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -73261,9 +76208,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Finding.decode = function decode(reader, length, error) {
+                        Finding.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.Finding(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -73307,26 +76258,28 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.sourceProperties, key);
                                         message.sourceProperties[key] = value;
                                         break;
                                     }
                                 case 8: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
-                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 13: {
@@ -73338,7 +76291,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -73369,9 +76322,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Finding.verify = function verify(message) {
+                        Finding.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -73401,23 +76358,23 @@
                                     return "sourceProperties: object expected";
                                 var key = Object.keys(message.sourceProperties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]], long + 1);
                                     if (error)
                                         return "sourceProperties." + error;
                                 }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.eventTime != null && message.hasOwnProperty("eventTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime, long + 1);
                                 if (error)
                                     return "eventTime." + error;
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
@@ -73446,9 +76403,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.Finding} Finding
                          */
-                        Finding.fromObject = function fromObject(object) {
+                        Finding.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.Finding)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.Finding();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -73485,25 +76446,27 @@
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Finding.sourceProperties: object expected");
                                 message.sourceProperties = {};
                                 for (var keys = Object.keys(object.sourceProperties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.sourceProperties, keys[i]);
                                     if (typeof object.sourceProperties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.Finding.sourceProperties: object expected");
-                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]]);
+                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]], long + 1);
                                 }
                             }
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Finding.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.eventTime != null) {
                                 if (typeof object.eventTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Finding.eventTime: object expected");
-                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime);
+                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime, long + 1);
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.Finding.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             switch (object.severity) {
                             default:
@@ -73581,8 +76544,11 @@
                             var keys2;
                             if (message.sourceProperties && (keys2 = Object.keys(message.sourceProperties)).length) {
                                 object.sourceProperties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.sourceProperties, keys2[j]);
                                     object.sourceProperties[keys2[j]] = $root.google.protobuf.Value.toObject(message.sourceProperties[keys2[j]], options);
+                                }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks"))
                                 object.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.toObject(message.securityMarks, options);
@@ -73687,7 +76653,7 @@
                         function NotificationConfig(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -73816,9 +76782,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        NotificationConfig.decode = function decode(reader, length, error) {
+                        NotificationConfig.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -73846,11 +76816,11 @@
                                         break;
                                     }
                                 case 6: {
-                                        message.streamingConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig.decode(reader, reader.uint32());
+                                        message.streamingConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -73881,9 +76851,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        NotificationConfig.verify = function verify(message) {
+                        NotificationConfig.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
@@ -73908,7 +76882,7 @@
                             if (message.streamingConfig != null && message.hasOwnProperty("streamingConfig")) {
                                 properties.notifyConfig = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig.verify(message.streamingConfig);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig.verify(message.streamingConfig, long + 1);
                                     if (error)
                                         return "streamingConfig." + error;
                                 }
@@ -73924,9 +76898,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.NotificationConfig} NotificationConfig
                          */
-                        NotificationConfig.fromObject = function fromObject(object) {
+                        NotificationConfig.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -73955,7 +76933,7 @@
                             if (object.streamingConfig != null) {
                                 if (typeof object.streamingConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.NotificationConfig.streamingConfig: object expected");
-                                message.streamingConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig.fromObject(object.streamingConfig);
+                                message.streamingConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig.fromObject(object.streamingConfig, long + 1);
                             }
                             return message;
                         };
@@ -74044,7 +77022,7 @@
                             function StreamingConfig(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -74109,9 +77087,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            StreamingConfig.decode = function decode(reader, length, error) {
+                            StreamingConfig.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -74123,7 +77105,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -74154,9 +77136,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            StreamingConfig.verify = function verify(message) {
+                            StreamingConfig.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.filter != null && message.hasOwnProperty("filter"))
                                     if (!$util.isString(message.filter))
                                         return "filter: string expected";
@@ -74171,9 +77157,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig} StreamingConfig
                              */
-                            StreamingConfig.fromObject = function fromObject(object) {
+                            StreamingConfig.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.StreamingConfig();
                                 if (object.filter != null)
                                     message.filter = String(object.filter);
@@ -74268,7 +77258,7 @@
                         function NotificationMessage(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -74367,9 +77357,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        NotificationMessage.decode = function decode(reader, length, error) {
+                        NotificationMessage.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.NotificationMessage();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -74381,15 +77375,15 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.resource = $root.google.cloud.securitycenter.v1p1beta1.Resource.decode(reader, reader.uint32());
+                                        message.resource = $root.google.cloud.securitycenter.v1p1beta1.Resource.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -74420,9 +77414,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        NotificationMessage.verify = function verify(message) {
+                        NotificationMessage.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.notificationConfigName != null && message.hasOwnProperty("notificationConfigName"))
                                 if (!$util.isString(message.notificationConfigName))
@@ -74430,13 +77428,13 @@
                             if (message.finding != null && message.hasOwnProperty("finding")) {
                                 properties.event = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Finding.verify(message.finding);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Finding.verify(message.finding, long + 1);
                                     if (error)
                                         return "finding." + error;
                                 }
                             }
                             if (message.resource != null && message.hasOwnProperty("resource")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.Resource.verify(message.resource);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.Resource.verify(message.resource, long + 1);
                                 if (error)
                                     return "resource." + error;
                             }
@@ -74451,21 +77449,25 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.NotificationMessage} NotificationMessage
                          */
-                        NotificationMessage.fromObject = function fromObject(object) {
+                        NotificationMessage.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.NotificationMessage)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.NotificationMessage();
                             if (object.notificationConfigName != null)
                                 message.notificationConfigName = String(object.notificationConfigName);
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.NotificationMessage.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.fromObject(object.finding, long + 1);
                             }
                             if (object.resource != null) {
                                 if (typeof object.resource !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.NotificationMessage.resource: object expected");
-                                message.resource = $root.google.cloud.securitycenter.v1p1beta1.Resource.fromObject(object.resource);
+                                message.resource = $root.google.cloud.securitycenter.v1p1beta1.Resource.fromObject(object.resource, long + 1);
                             }
                             return message;
                         };
@@ -74554,7 +77556,7 @@
                             this.folders = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -74670,9 +77672,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Resource.decode = function decode(reader, length, error) {
+                        Resource.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.Resource();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -74702,11 +77708,11 @@
                                 case 7: {
                                         if (!(message.folders && message.folders.length))
                                             message.folders = [];
-                                        message.folders.push($root.google.cloud.securitycenter.v1p1beta1.Folder.decode(reader, reader.uint32()));
+                                        message.folders.push($root.google.cloud.securitycenter.v1p1beta1.Folder.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -74737,9 +77743,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Resource.verify = function verify(message) {
+                        Resource.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -74759,7 +77769,7 @@
                                 if (!Array.isArray(message.folders))
                                     return "folders: array expected";
                                 for (var i = 0; i < message.folders.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Folder.verify(message.folders[i]);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Folder.verify(message.folders[i], long + 1);
                                     if (error)
                                         return "folders." + error;
                                 }
@@ -74775,9 +77785,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.Resource} Resource
                          */
-                        Resource.fromObject = function fromObject(object) {
+                        Resource.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.Resource)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.Resource();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -74796,7 +77810,7 @@
                                 for (var i = 0; i < object.folders.length; ++i) {
                                     if (typeof object.folders[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.Resource.folders: object expected");
-                                    message.folders[i] = $root.google.cloud.securitycenter.v1p1beta1.Folder.fromObject(object.folders[i]);
+                                    message.folders[i] = $root.google.cloud.securitycenter.v1p1beta1.Folder.fromObject(object.folders[i], long + 1);
                                 }
                             }
                             return message;
@@ -74893,7 +77907,7 @@
                         function OrganizationSettings(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -74978,9 +77992,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        OrganizationSettings.decode = function decode(reader, length, error) {
+                        OrganizationSettings.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -74996,11 +78014,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig.decode(reader, reader.uint32());
+                                        message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -75031,9 +78049,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        OrganizationSettings.verify = function verify(message) {
+                        OrganizationSettings.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -75041,7 +78063,7 @@
                                 if (typeof message.enableAssetDiscovery !== "boolean")
                                     return "enableAssetDiscovery: boolean expected";
                             if (message.assetDiscoveryConfig != null && message.hasOwnProperty("assetDiscoveryConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig.verify(message.assetDiscoveryConfig);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig.verify(message.assetDiscoveryConfig, long + 1);
                                 if (error)
                                     return "assetDiscoveryConfig." + error;
                             }
@@ -75056,9 +78078,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.OrganizationSettings} OrganizationSettings
                          */
-                        OrganizationSettings.fromObject = function fromObject(object) {
+                        OrganizationSettings.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -75067,7 +78093,7 @@
                             if (object.assetDiscoveryConfig != null) {
                                 if (typeof object.assetDiscoveryConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.OrganizationSettings.assetDiscoveryConfig: object expected");
-                                message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig.fromObject(object.assetDiscoveryConfig);
+                                message.assetDiscoveryConfig = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig.fromObject(object.assetDiscoveryConfig, long + 1);
                             }
                             return message;
                         };
@@ -75149,7 +78175,7 @@
                                 this.folderIds = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -75236,9 +78262,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AssetDiscoveryConfig.decode = function decode(reader, length, error) {
+                            AssetDiscoveryConfig.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -75262,7 +78292,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -75293,9 +78323,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AssetDiscoveryConfig.verify = function verify(message) {
+                            AssetDiscoveryConfig.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.projectIds != null && message.hasOwnProperty("projectIds")) {
                                     if (!Array.isArray(message.projectIds))
                                         return "projectIds: array expected";
@@ -75330,9 +78364,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig} AssetDiscoveryConfig
                              */
-                            AssetDiscoveryConfig.fromObject = function fromObject(object) {
+                            AssetDiscoveryConfig.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.AssetDiscoveryConfig();
                                 if (object.projectIds) {
                                     if (!Array.isArray(object.projectIds))
@@ -75474,7 +78512,7 @@
                         function RunAssetDiscoveryResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -75549,9 +78587,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        RunAssetDiscoveryResponse.decode = function decode(reader, length, error) {
+                        RunAssetDiscoveryResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.RunAssetDiscoveryResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -75563,11 +78605,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -75598,9 +78640,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        RunAssetDiscoveryResponse.verify = function verify(message) {
+                        RunAssetDiscoveryResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.state != null && message.hasOwnProperty("state"))
                                 switch (message.state) {
                                 default:
@@ -75612,7 +78658,7 @@
                                     break;
                                 }
                             if (message.duration != null && message.hasOwnProperty("duration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.duration);
+                                var error = $root.google.protobuf.Duration.verify(message.duration, long + 1);
                                 if (error)
                                     return "duration." + error;
                             }
@@ -75627,9 +78673,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.RunAssetDiscoveryResponse} RunAssetDiscoveryResponse
                          */
-                        RunAssetDiscoveryResponse.fromObject = function fromObject(object) {
+                        RunAssetDiscoveryResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.RunAssetDiscoveryResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.RunAssetDiscoveryResponse();
                             switch (object.state) {
                             default:
@@ -75658,7 +78708,7 @@
                             if (object.duration != null) {
                                 if (typeof object.duration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.RunAssetDiscoveryResponse.duration: object expected");
-                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration);
+                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration, long + 1);
                             }
                             return message;
                         };
@@ -76550,7 +79600,7 @@
                         function CreateFindingRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -76635,9 +79685,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateFindingRequest.decode = function decode(reader, length, error) {
+                        CreateFindingRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.CreateFindingRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -76653,11 +79707,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -76688,9 +79742,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateFindingRequest.verify = function verify(message) {
+                        CreateFindingRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -76698,7 +79756,7 @@
                                 if (!$util.isString(message.findingId))
                                     return "findingId: string expected";
                             if (message.finding != null && message.hasOwnProperty("finding")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.Finding.verify(message.finding);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.Finding.verify(message.finding, long + 1);
                                 if (error)
                                     return "finding." + error;
                             }
@@ -76713,9 +79771,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.CreateFindingRequest} CreateFindingRequest
                          */
-                        CreateFindingRequest.fromObject = function fromObject(object) {
+                        CreateFindingRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.CreateFindingRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.CreateFindingRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -76724,7 +79786,7 @@
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.CreateFindingRequest.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.fromObject(object.finding, long + 1);
                             }
                             return message;
                         };
@@ -76807,7 +79869,7 @@
                         function CreateNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -76892,9 +79954,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        CreateNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.CreateNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -76910,11 +79976,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.notificationConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.decode(reader, reader.uint32());
+                                        message.notificationConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -76945,9 +80011,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateNotificationConfigRequest.verify = function verify(message) {
+                        CreateNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -76955,7 +80025,7 @@
                                 if (!$util.isString(message.configId))
                                     return "configId: string expected";
                             if (message.notificationConfig != null && message.hasOwnProperty("notificationConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.verify(message.notificationConfig);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.verify(message.notificationConfig, long + 1);
                                 if (error)
                                     return "notificationConfig." + error;
                             }
@@ -76970,9 +80040,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.CreateNotificationConfigRequest} CreateNotificationConfigRequest
                          */
-                        CreateNotificationConfigRequest.fromObject = function fromObject(object) {
+                        CreateNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.CreateNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.CreateNotificationConfigRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -76981,7 +80055,7 @@
                             if (object.notificationConfig != null) {
                                 if (typeof object.notificationConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.CreateNotificationConfigRequest.notificationConfig: object expected");
-                                message.notificationConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.fromObject(object.notificationConfig);
+                                message.notificationConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.fromObject(object.notificationConfig, long + 1);
                             }
                             return message;
                         };
@@ -77063,7 +80137,7 @@
                         function CreateSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -77138,9 +80212,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateSourceRequest.decode = function decode(reader, length, error) {
+                        CreateSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.CreateSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -77152,11 +80230,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.source = $root.google.cloud.securitycenter.v1p1beta1.Source.decode(reader, reader.uint32());
+                                        message.source = $root.google.cloud.securitycenter.v1p1beta1.Source.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -77187,14 +80265,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateSourceRequest.verify = function verify(message) {
+                        CreateSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.source != null && message.hasOwnProperty("source")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.Source.verify(message.source);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.Source.verify(message.source, long + 1);
                                 if (error)
                                     return "source." + error;
                             }
@@ -77209,16 +80291,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.CreateSourceRequest} CreateSourceRequest
                          */
-                        CreateSourceRequest.fromObject = function fromObject(object) {
+                        CreateSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.CreateSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.CreateSourceRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.source != null) {
                                 if (typeof object.source !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.CreateSourceRequest.source: object expected");
-                                message.source = $root.google.cloud.securitycenter.v1p1beta1.Source.fromObject(object.source);
+                                message.source = $root.google.cloud.securitycenter.v1p1beta1.Source.fromObject(object.source, long + 1);
                             }
                             return message;
                         };
@@ -77296,7 +80382,7 @@
                         function DeleteNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -77361,9 +80447,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        DeleteNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.DeleteNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -77375,7 +80465,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -77406,9 +80496,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteNotificationConfigRequest.verify = function verify(message) {
+                        DeleteNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -77423,9 +80517,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.DeleteNotificationConfigRequest} DeleteNotificationConfigRequest
                          */
-                        DeleteNotificationConfigRequest.fromObject = function fromObject(object) {
+                        DeleteNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.DeleteNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.DeleteNotificationConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -77501,7 +80599,7 @@
                         function GetNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -77566,9 +80664,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        GetNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.GetNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -77580,7 +80682,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -77611,9 +80713,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetNotificationConfigRequest.verify = function verify(message) {
+                        GetNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -77628,9 +80734,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.GetNotificationConfigRequest} GetNotificationConfigRequest
                          */
-                        GetNotificationConfigRequest.fromObject = function fromObject(object) {
+                        GetNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.GetNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.GetNotificationConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -77706,7 +80816,7 @@
                         function GetOrganizationSettingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -77771,9 +80881,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetOrganizationSettingsRequest.decode = function decode(reader, length, error) {
+                        GetOrganizationSettingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.GetOrganizationSettingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -77785,7 +80899,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -77816,9 +80930,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetOrganizationSettingsRequest.verify = function verify(message) {
+                        GetOrganizationSettingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -77833,9 +80951,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.GetOrganizationSettingsRequest} GetOrganizationSettingsRequest
                          */
-                        GetOrganizationSettingsRequest.fromObject = function fromObject(object) {
+                        GetOrganizationSettingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.GetOrganizationSettingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.GetOrganizationSettingsRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -77911,7 +81033,7 @@
                         function GetSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -77976,9 +81098,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetSourceRequest.decode = function decode(reader, length, error) {
+                        GetSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.GetSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -77990,7 +81116,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -78021,9 +81147,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetSourceRequest.verify = function verify(message) {
+                        GetSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -78038,9 +81168,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.GetSourceRequest} GetSourceRequest
                          */
-                        GetSourceRequest.fromObject = function fromObject(object) {
+                        GetSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.GetSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.GetSourceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -78122,7 +81256,7 @@
                         function GroupAssetsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -78247,9 +81381,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupAssetsRequest.decode = function decode(reader, length, error) {
+                        GroupAssetsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.GroupAssetsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -78269,11 +81407,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -78285,7 +81423,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -78316,9 +81454,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupAssetsRequest.verify = function verify(message) {
+                        GroupAssetsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -78329,12 +81471,12 @@
                                 if (!$util.isString(message.groupBy))
                                     return "groupBy: string expected";
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -78355,9 +81497,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.GroupAssetsRequest} GroupAssetsRequest
                          */
-                        GroupAssetsRequest.fromObject = function fromObject(object) {
+                        GroupAssetsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.GroupAssetsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.GroupAssetsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -78368,12 +81514,12 @@
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupAssetsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupAssetsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -78474,7 +81620,7 @@
                             this.groupByResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -78570,9 +81716,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupAssetsResponse.decode = function decode(reader, length, error) {
+                        GroupAssetsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.GroupAssetsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -78582,11 +81732,11 @@
                                 case 1: {
                                         if (!(message.groupByResults && message.groupByResults.length))
                                             message.groupByResults = [];
-                                        message.groupByResults.push($root.google.cloud.securitycenter.v1p1beta1.GroupResult.decode(reader, reader.uint32()));
+                                        message.groupByResults.push($root.google.cloud.securitycenter.v1p1beta1.GroupResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -78598,7 +81748,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -78629,20 +81779,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupAssetsResponse.verify = function verify(message) {
+                        GroupAssetsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.groupByResults != null && message.hasOwnProperty("groupByResults")) {
                                 if (!Array.isArray(message.groupByResults))
                                     return "groupByResults: array expected";
                                 for (var i = 0; i < message.groupByResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.GroupResult.verify(message.groupByResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.GroupResult.verify(message.groupByResults[i], long + 1);
                                     if (error)
                                         return "groupByResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -78663,9 +81817,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.GroupAssetsResponse} GroupAssetsResponse
                          */
-                        GroupAssetsResponse.fromObject = function fromObject(object) {
+                        GroupAssetsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.GroupAssetsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.GroupAssetsResponse();
                             if (object.groupByResults) {
                                 if (!Array.isArray(object.groupByResults))
@@ -78674,13 +81832,13 @@
                                 for (var i = 0; i < object.groupByResults.length; ++i) {
                                     if (typeof object.groupByResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupAssetsResponse.groupByResults: object expected");
-                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1p1beta1.GroupResult.fromObject(object.groupByResults[i]);
+                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1p1beta1.GroupResult.fromObject(object.groupByResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupAssetsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -78778,7 +81936,7 @@
                         function GroupFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -78903,9 +82061,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupFindingsRequest.decode = function decode(reader, length, error) {
+                        GroupFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.GroupFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -78925,11 +82087,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -78941,7 +82103,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -78972,9 +82134,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupFindingsRequest.verify = function verify(message) {
+                        GroupFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -78985,12 +82151,12 @@
                                 if (!$util.isString(message.groupBy))
                                     return "groupBy: string expected";
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
@@ -79011,9 +82177,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.GroupFindingsRequest} GroupFindingsRequest
                          */
-                        GroupFindingsRequest.fromObject = function fromObject(object) {
+                        GroupFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.GroupFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.GroupFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -79024,12 +82194,12 @@
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupFindingsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupFindingsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -79130,7 +82300,7 @@
                             this.groupByResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -79226,9 +82396,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupFindingsResponse.decode = function decode(reader, length, error) {
+                        GroupFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.GroupFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -79238,11 +82412,11 @@
                                 case 1: {
                                         if (!(message.groupByResults && message.groupByResults.length))
                                             message.groupByResults = [];
-                                        message.groupByResults.push($root.google.cloud.securitycenter.v1p1beta1.GroupResult.decode(reader, reader.uint32()));
+                                        message.groupByResults.push($root.google.cloud.securitycenter.v1p1beta1.GroupResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -79254,7 +82428,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -79285,20 +82459,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupFindingsResponse.verify = function verify(message) {
+                        GroupFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.groupByResults != null && message.hasOwnProperty("groupByResults")) {
                                 if (!Array.isArray(message.groupByResults))
                                     return "groupByResults: array expected";
                                 for (var i = 0; i < message.groupByResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.GroupResult.verify(message.groupByResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.GroupResult.verify(message.groupByResults[i], long + 1);
                                     if (error)
                                         return "groupByResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -79319,9 +82497,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.GroupFindingsResponse} GroupFindingsResponse
                          */
-                        GroupFindingsResponse.fromObject = function fromObject(object) {
+                        GroupFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.GroupFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.GroupFindingsResponse();
                             if (object.groupByResults) {
                                 if (!Array.isArray(object.groupByResults))
@@ -79330,13 +82512,13 @@
                                 for (var i = 0; i < object.groupByResults.length; ++i) {
                                     if (typeof object.groupByResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupFindingsResponse.groupByResults: object expected");
-                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1p1beta1.GroupResult.fromObject(object.groupByResults[i]);
+                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v1p1beta1.GroupResult.fromObject(object.groupByResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupFindingsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -79430,7 +82612,7 @@
                             this.properties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -79508,9 +82690,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupResult.decode = function decode(reader, length, error) {
+                        GroupResult.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.GroupResult(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -79530,13 +82716,15 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.properties, key);
                                         message.properties[key] = value;
                                         break;
                                     }
@@ -79545,7 +82733,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -79576,15 +82764,19 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupResult.verify = function verify(message) {
+                        GroupResult.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.properties != null && message.hasOwnProperty("properties")) {
                                 if (!$util.isObject(message.properties))
                                     return "properties: object expected";
                                 var key = Object.keys(message.properties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.properties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.properties[key[i]], long + 1);
                                     if (error)
                                         return "properties." + error;
                                 }
@@ -79603,18 +82795,24 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.GroupResult} GroupResult
                          */
-                        GroupResult.fromObject = function fromObject(object) {
+                        GroupResult.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.GroupResult)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.GroupResult();
                             if (object.properties) {
                                 if (typeof object.properties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupResult.properties: object expected");
                                 message.properties = {};
                                 for (var keys = Object.keys(object.properties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.properties, keys[i]);
                                     if (typeof object.properties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.GroupResult.properties: object expected");
-                                    message.properties[keys[i]] = $root.google.protobuf.Value.fromObject(object.properties[keys[i]]);
+                                    message.properties[keys[i]] = $root.google.protobuf.Value.fromObject(object.properties[keys[i]], long + 1);
                                 }
                             }
                             if (object.count != null)
@@ -79653,8 +82851,11 @@
                             var keys2;
                             if (message.properties && (keys2 = Object.keys(message.properties)).length) {
                                 object.properties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.properties, keys2[j]);
                                     object.properties[keys2[j]] = $root.google.protobuf.Value.toObject(message.properties[keys2[j]], options);
+                                }
                             }
                             if (message.count != null && message.hasOwnProperty("count"))
                                 if (typeof message.count === "number")
@@ -79715,7 +82916,7 @@
                         function ListNotificationConfigsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -79800,9 +83001,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNotificationConfigsRequest.decode = function decode(reader, length, error) {
+                        ListNotificationConfigsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListNotificationConfigsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -79822,7 +83027,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -79853,9 +83058,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNotificationConfigsRequest.verify = function verify(message) {
+                        ListNotificationConfigsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -79876,9 +83085,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.ListNotificationConfigsRequest} ListNotificationConfigsRequest
                          */
-                        ListNotificationConfigsRequest.fromObject = function fromObject(object) {
+                        ListNotificationConfigsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListNotificationConfigsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.ListNotificationConfigsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -79967,7 +83180,7 @@
                             this.notificationConfigs = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -80043,9 +83256,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNotificationConfigsResponse.decode = function decode(reader, length, error) {
+                        ListNotificationConfigsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListNotificationConfigsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -80055,7 +83272,7 @@
                                 case 1: {
                                         if (!(message.notificationConfigs && message.notificationConfigs.length))
                                             message.notificationConfigs = [];
-                                        message.notificationConfigs.push($root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.decode(reader, reader.uint32()));
+                                        message.notificationConfigs.push($root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -80063,7 +83280,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -80094,14 +83311,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNotificationConfigsResponse.verify = function verify(message) {
+                        ListNotificationConfigsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.notificationConfigs != null && message.hasOwnProperty("notificationConfigs")) {
                                 if (!Array.isArray(message.notificationConfigs))
                                     return "notificationConfigs: array expected";
                                 for (var i = 0; i < message.notificationConfigs.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.verify(message.notificationConfigs[i]);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.verify(message.notificationConfigs[i], long + 1);
                                     if (error)
                                         return "notificationConfigs." + error;
                                 }
@@ -80120,9 +83341,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.ListNotificationConfigsResponse} ListNotificationConfigsResponse
                          */
-                        ListNotificationConfigsResponse.fromObject = function fromObject(object) {
+                        ListNotificationConfigsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListNotificationConfigsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.ListNotificationConfigsResponse();
                             if (object.notificationConfigs) {
                                 if (!Array.isArray(object.notificationConfigs))
@@ -80131,7 +83356,7 @@
                                 for (var i = 0; i < object.notificationConfigs.length; ++i) {
                                     if (typeof object.notificationConfigs[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListNotificationConfigsResponse.notificationConfigs: object expected");
-                                    message.notificationConfigs[i] = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.fromObject(object.notificationConfigs[i]);
+                                    message.notificationConfigs[i] = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.fromObject(object.notificationConfigs[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -80217,7 +83442,7 @@
                         function ListSourcesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -80302,9 +83527,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSourcesRequest.decode = function decode(reader, length, error) {
+                        ListSourcesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListSourcesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -80324,7 +83553,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -80355,9 +83584,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSourcesRequest.verify = function verify(message) {
+                        ListSourcesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -80378,9 +83611,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.ListSourcesRequest} ListSourcesRequest
                          */
-                        ListSourcesRequest.fromObject = function fromObject(object) {
+                        ListSourcesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListSourcesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.ListSourcesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -80469,7 +83706,7 @@
                             this.sources = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -80545,9 +83782,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSourcesResponse.decode = function decode(reader, length, error) {
+                        ListSourcesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListSourcesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -80557,7 +83798,7 @@
                                 case 1: {
                                         if (!(message.sources && message.sources.length))
                                             message.sources = [];
-                                        message.sources.push($root.google.cloud.securitycenter.v1p1beta1.Source.decode(reader, reader.uint32()));
+                                        message.sources.push($root.google.cloud.securitycenter.v1p1beta1.Source.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -80565,7 +83806,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -80596,14 +83837,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSourcesResponse.verify = function verify(message) {
+                        ListSourcesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.sources != null && message.hasOwnProperty("sources")) {
                                 if (!Array.isArray(message.sources))
                                     return "sources: array expected";
                                 for (var i = 0; i < message.sources.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Source.verify(message.sources[i]);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Source.verify(message.sources[i], long + 1);
                                     if (error)
                                         return "sources." + error;
                                 }
@@ -80622,9 +83867,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.ListSourcesResponse} ListSourcesResponse
                          */
-                        ListSourcesResponse.fromObject = function fromObject(object) {
+                        ListSourcesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListSourcesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.ListSourcesResponse();
                             if (object.sources) {
                                 if (!Array.isArray(object.sources))
@@ -80633,7 +83882,7 @@
                                 for (var i = 0; i < object.sources.length; ++i) {
                                     if (typeof object.sources[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListSourcesResponse.sources: object expected");
-                                    message.sources[i] = $root.google.cloud.securitycenter.v1p1beta1.Source.fromObject(object.sources[i]);
+                                    message.sources[i] = $root.google.cloud.securitycenter.v1p1beta1.Source.fromObject(object.sources[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -80724,7 +83973,7 @@
                         function ListAssetsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -80859,9 +84108,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAssetsRequest.decode = function decode(reader, length, error) {
+                        ListAssetsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListAssetsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -80881,15 +84134,15 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
-                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
@@ -80901,7 +84154,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -80932,9 +84185,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAssetsRequest.verify = function verify(message) {
+                        ListAssetsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -80945,17 +84202,17 @@
                                 if (!$util.isString(message.orderBy))
                                     return "orderBy: string expected";
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
                             if (message.fieldMask != null && message.hasOwnProperty("fieldMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask, long + 1);
                                 if (error)
                                     return "fieldMask." + error;
                             }
@@ -80976,9 +84233,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.ListAssetsRequest} ListAssetsRequest
                          */
-                        ListAssetsRequest.fromObject = function fromObject(object) {
+                        ListAssetsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListAssetsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.ListAssetsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -80989,17 +84250,17 @@
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListAssetsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListAssetsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.fieldMask != null) {
                                 if (typeof object.fieldMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListAssetsRequest.fieldMask: object expected");
-                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask);
+                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -81103,7 +84364,7 @@
                             this.listAssetsResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -81199,9 +84460,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAssetsResponse.decode = function decode(reader, length, error) {
+                        ListAssetsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -81211,11 +84476,11 @@
                                 case 1: {
                                         if (!(message.listAssetsResults && message.listAssetsResults.length))
                                             message.listAssetsResults = [];
-                                        message.listAssetsResults.push($root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult.decode(reader, reader.uint32()));
+                                        message.listAssetsResults.push($root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -81227,7 +84492,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -81258,20 +84523,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAssetsResponse.verify = function verify(message) {
+                        ListAssetsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.listAssetsResults != null && message.hasOwnProperty("listAssetsResults")) {
                                 if (!Array.isArray(message.listAssetsResults))
                                     return "listAssetsResults: array expected";
                                 for (var i = 0; i < message.listAssetsResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult.verify(message.listAssetsResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult.verify(message.listAssetsResults[i], long + 1);
                                     if (error)
                                         return "listAssetsResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -81292,9 +84561,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.ListAssetsResponse} ListAssetsResponse
                          */
-                        ListAssetsResponse.fromObject = function fromObject(object) {
+                        ListAssetsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse();
                             if (object.listAssetsResults) {
                                 if (!Array.isArray(object.listAssetsResults))
@@ -81303,13 +84576,13 @@
                                 for (var i = 0; i < object.listAssetsResults.length; ++i) {
                                     if (typeof object.listAssetsResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.listAssetsResults: object expected");
-                                    message.listAssetsResults[i] = $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult.fromObject(object.listAssetsResults[i]);
+                                    message.listAssetsResults[i] = $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult.fromObject(object.listAssetsResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -81399,7 +84672,7 @@
                             function ListAssetsResult(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -81474,9 +84747,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ListAssetsResult.decode = function decode(reader, length, error) {
+                            ListAssetsResult.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -81484,7 +84761,7 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.asset = $root.google.cloud.securitycenter.v1p1beta1.Asset.decode(reader, reader.uint32());
+                                            message.asset = $root.google.cloud.securitycenter.v1p1beta1.Asset.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 2: {
@@ -81492,7 +84769,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -81523,11 +84800,15 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ListAssetsResult.verify = function verify(message) {
+                            ListAssetsResult.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.asset != null && message.hasOwnProperty("asset")) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Asset.verify(message.asset);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Asset.verify(message.asset, long + 1);
                                     if (error)
                                         return "asset." + error;
                                 }
@@ -81552,14 +84833,18 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult} ListAssetsResult
                              */
-                            ListAssetsResult.fromObject = function fromObject(object) {
+                            ListAssetsResult.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult();
                                 if (object.asset != null) {
                                     if (typeof object.asset !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListAssetsResponse.ListAssetsResult.asset: object expected");
-                                    message.asset = $root.google.cloud.securitycenter.v1p1beta1.Asset.fromObject(object.asset);
+                                    message.asset = $root.google.cloud.securitycenter.v1p1beta1.Asset.fromObject(object.asset, long + 1);
                                 }
                                 switch (object.stateChange) {
                                 default:
@@ -81689,7 +84974,7 @@
                         function ListFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -81824,9 +85109,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListFindingsRequest.decode = function decode(reader, length, error) {
+                        ListFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -81846,15 +85135,15 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.compareDuration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
-                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
@@ -81866,7 +85155,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -81897,9 +85186,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListFindingsRequest.verify = function verify(message) {
+                        ListFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -81910,17 +85203,17 @@
                                 if (!$util.isString(message.orderBy))
                                     return "orderBy: string expected";
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
                             if (message.compareDuration != null && message.hasOwnProperty("compareDuration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.compareDuration);
+                                var error = $root.google.protobuf.Duration.verify(message.compareDuration, long + 1);
                                 if (error)
                                     return "compareDuration." + error;
                             }
                             if (message.fieldMask != null && message.hasOwnProperty("fieldMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask, long + 1);
                                 if (error)
                                     return "fieldMask." + error;
                             }
@@ -81941,9 +85234,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.ListFindingsRequest} ListFindingsRequest
                          */
-                        ListFindingsRequest.fromObject = function fromObject(object) {
+                        ListFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.ListFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -81954,17 +85251,17 @@
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListFindingsRequest.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.compareDuration != null) {
                                 if (typeof object.compareDuration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListFindingsRequest.compareDuration: object expected");
-                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration);
+                                message.compareDuration = $root.google.protobuf.Duration.fromObject(object.compareDuration, long + 1);
                             }
                             if (object.fieldMask != null) {
                                 if (typeof object.fieldMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListFindingsRequest.fieldMask: object expected");
-                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask);
+                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -82068,7 +85365,7 @@
                             this.listFindingsResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -82164,9 +85461,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListFindingsResponse.decode = function decode(reader, length, error) {
+                        ListFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -82176,11 +85477,11 @@
                                 case 1: {
                                         if (!(message.listFindingsResults && message.listFindingsResults.length))
                                             message.listFindingsResults = [];
-                                        message.listFindingsResults.push($root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.decode(reader, reader.uint32()));
+                                        message.listFindingsResults.push($root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.readTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -82192,7 +85493,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -82223,20 +85524,24 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListFindingsResponse.verify = function verify(message) {
+                        ListFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.listFindingsResults != null && message.hasOwnProperty("listFindingsResults")) {
                                 if (!Array.isArray(message.listFindingsResults))
                                     return "listFindingsResults: array expected";
                                 for (var i = 0; i < message.listFindingsResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.verify(message.listFindingsResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.verify(message.listFindingsResults[i], long + 1);
                                     if (error)
                                         return "listFindingsResults." + error;
                                 }
                             }
                             if (message.readTime != null && message.hasOwnProperty("readTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.readTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.readTime, long + 1);
                                 if (error)
                                     return "readTime." + error;
                             }
@@ -82257,9 +85562,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.ListFindingsResponse} ListFindingsResponse
                          */
-                        ListFindingsResponse.fromObject = function fromObject(object) {
+                        ListFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse();
                             if (object.listFindingsResults) {
                                 if (!Array.isArray(object.listFindingsResults))
@@ -82268,13 +85577,13 @@
                                 for (var i = 0; i < object.listFindingsResults.length; ++i) {
                                     if (typeof object.listFindingsResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.listFindingsResults: object expected");
-                                    message.listFindingsResults[i] = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.fromObject(object.listFindingsResults[i]);
+                                    message.listFindingsResults[i] = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.fromObject(object.listFindingsResults[i], long + 1);
                                 }
                             }
                             if (object.readTime != null) {
                                 if (typeof object.readTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.readTime: object expected");
-                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime);
+                                message.readTime = $root.google.protobuf.Timestamp.fromObject(object.readTime, long + 1);
                             }
                             if (object.nextPageToken != null)
                                 message.nextPageToken = String(object.nextPageToken);
@@ -82365,7 +85674,7 @@
                             function ListFindingsResult(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -82450,9 +85759,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ListFindingsResult.decode = function decode(reader, length, error) {
+                            ListFindingsResult.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -82460,7 +85773,7 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.decode(reader, reader.uint32());
+                                            message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 2: {
@@ -82468,11 +85781,11 @@
                                             break;
                                         }
                                     case 3: {
-                                            message.resource = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource.decode(reader, reader.uint32());
+                                            message.resource = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -82503,11 +85816,15 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ListFindingsResult.verify = function verify(message) {
+                            ListFindingsResult.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.finding != null && message.hasOwnProperty("finding")) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Finding.verify(message.finding);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.Finding.verify(message.finding, long + 1);
                                     if (error)
                                         return "finding." + error;
                                 }
@@ -82523,7 +85840,7 @@
                                         break;
                                     }
                                 if (message.resource != null && message.hasOwnProperty("resource")) {
-                                    var error = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource.verify(message.resource);
+                                    var error = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource.verify(message.resource, long + 1);
                                     if (error)
                                         return "resource." + error;
                                 }
@@ -82538,14 +85855,18 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult} ListFindingsResult
                              */
-                            ListFindingsResult.fromObject = function fromObject(object) {
+                            ListFindingsResult.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult();
                                 if (object.finding != null) {
                                     if (typeof object.finding !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.finding: object expected");
-                                    message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.fromObject(object.finding);
+                                    message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.fromObject(object.finding, long + 1);
                                 }
                                 switch (object.stateChange) {
                                 default:
@@ -82578,7 +85899,7 @@
                                 if (object.resource != null) {
                                     if (typeof object.resource !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.resource: object expected");
-                                    message.resource = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource.fromObject(object.resource);
+                                    message.resource = $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource.fromObject(object.resource, long + 1);
                                 }
                                 return message;
                             };
@@ -82662,7 +85983,7 @@
                                     this.folders = [];
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -82778,9 +86099,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                Resource.decode = function decode(reader, length, error) {
+                                Resource.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -82810,11 +86135,11 @@
                                         case 10: {
                                                 if (!(message.folders && message.folders.length))
                                                     message.folders = [];
-                                                message.folders.push($root.google.cloud.securitycenter.v1p1beta1.Folder.decode(reader, reader.uint32()));
+                                                message.folders.push($root.google.cloud.securitycenter.v1p1beta1.Folder.decode(reader, reader.uint32(), undefined, long + 1));
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -82845,9 +86170,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                Resource.verify = function verify(message) {
+                                Resource.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.name != null && message.hasOwnProperty("name"))
                                         if (!$util.isString(message.name))
                                             return "name: string expected";
@@ -82867,7 +86196,7 @@
                                         if (!Array.isArray(message.folders))
                                             return "folders: array expected";
                                         for (var i = 0; i < message.folders.length; ++i) {
-                                            var error = $root.google.cloud.securitycenter.v1p1beta1.Folder.verify(message.folders[i]);
+                                            var error = $root.google.cloud.securitycenter.v1p1beta1.Folder.verify(message.folders[i], long + 1);
                                             if (error)
                                                 return "folders." + error;
                                         }
@@ -82883,9 +86212,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource} Resource
                                  */
-                                Resource.fromObject = function fromObject(object) {
+                                Resource.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource();
                                     if (object.name != null)
                                         message.name = String(object.name);
@@ -82904,7 +86237,7 @@
                                         for (var i = 0; i < object.folders.length; ++i) {
                                             if (typeof object.folders[i] !== "object")
                                                 throw TypeError(".google.cloud.securitycenter.v1p1beta1.ListFindingsResponse.ListFindingsResult.Resource.folders: object expected");
-                                            message.folders[i] = $root.google.cloud.securitycenter.v1p1beta1.Folder.fromObject(object.folders[i]);
+                                            message.folders[i] = $root.google.cloud.securitycenter.v1p1beta1.Folder.fromObject(object.folders[i], long + 1);
                                         }
                                     }
                                     return message;
@@ -83027,7 +86360,7 @@
                         function SetFindingStateRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -83112,9 +86445,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SetFindingStateRequest.decode = function decode(reader, length, error) {
+                        SetFindingStateRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.SetFindingStateRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -83130,11 +86467,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -83165,9 +86502,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SetFindingStateRequest.verify = function verify(message) {
+                        SetFindingStateRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -83181,7 +86522,7 @@
                                     break;
                                 }
                             if (message.startTime != null && message.hasOwnProperty("startTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1);
                                 if (error)
                                     return "startTime." + error;
                             }
@@ -83196,9 +86537,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.SetFindingStateRequest} SetFindingStateRequest
                          */
-                        SetFindingStateRequest.fromObject = function fromObject(object) {
+                        SetFindingStateRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.SetFindingStateRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.SetFindingStateRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -83225,7 +86570,7 @@
                             if (object.startTime != null) {
                                 if (typeof object.startTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.SetFindingStateRequest.startTime: object expected");
-                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1);
                             }
                             return message;
                         };
@@ -83306,7 +86651,7 @@
                         function RunAssetDiscoveryRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -83371,9 +86716,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        RunAssetDiscoveryRequest.decode = function decode(reader, length, error) {
+                        RunAssetDiscoveryRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.RunAssetDiscoveryRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -83385,7 +86734,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -83416,9 +86765,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        RunAssetDiscoveryRequest.verify = function verify(message) {
+                        RunAssetDiscoveryRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -83433,9 +86786,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.RunAssetDiscoveryRequest} RunAssetDiscoveryRequest
                          */
-                        RunAssetDiscoveryRequest.fromObject = function fromObject(object) {
+                        RunAssetDiscoveryRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.RunAssetDiscoveryRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.RunAssetDiscoveryRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -83512,7 +86869,7 @@
                         function UpdateFindingRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -83587,9 +86944,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateFindingRequest.decode = function decode(reader, length, error) {
+                        UpdateFindingRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateFindingRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -83597,15 +86958,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -83636,16 +86997,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateFindingRequest.verify = function verify(message) {
+                        UpdateFindingRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.finding != null && message.hasOwnProperty("finding")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.Finding.verify(message.finding);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.Finding.verify(message.finding, long + 1);
                                 if (error)
                                     return "finding." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -83660,19 +87025,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.UpdateFindingRequest} UpdateFindingRequest
                          */
-                        UpdateFindingRequest.fromObject = function fromObject(object) {
+                        UpdateFindingRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.UpdateFindingRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateFindingRequest();
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateFindingRequest.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v1p1beta1.Finding.fromObject(object.finding, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateFindingRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -83751,7 +87120,7 @@
                         function UpdateNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -83826,9 +87195,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        UpdateNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -83836,15 +87209,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.notificationConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.decode(reader, reader.uint32());
+                                        message.notificationConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -83875,16 +87248,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateNotificationConfigRequest.verify = function verify(message) {
+                        UpdateNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.notificationConfig != null && message.hasOwnProperty("notificationConfig")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.verify(message.notificationConfig);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.verify(message.notificationConfig, long + 1);
                                 if (error)
                                     return "notificationConfig." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -83899,19 +87276,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.UpdateNotificationConfigRequest} UpdateNotificationConfigRequest
                          */
-                        UpdateNotificationConfigRequest.fromObject = function fromObject(object) {
+                        UpdateNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.UpdateNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateNotificationConfigRequest();
                             if (object.notificationConfig != null) {
                                 if (typeof object.notificationConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateNotificationConfigRequest.notificationConfig: object expected");
-                                message.notificationConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.fromObject(object.notificationConfig);
+                                message.notificationConfig = $root.google.cloud.securitycenter.v1p1beta1.NotificationConfig.fromObject(object.notificationConfig, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateNotificationConfigRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -83990,7 +87371,7 @@
                         function UpdateOrganizationSettingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -84065,9 +87446,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateOrganizationSettingsRequest.decode = function decode(reader, length, error) {
+                        UpdateOrganizationSettingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateOrganizationSettingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -84075,15 +87460,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.organizationSettings = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.decode(reader, reader.uint32());
+                                        message.organizationSettings = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -84114,16 +87499,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateOrganizationSettingsRequest.verify = function verify(message) {
+                        UpdateOrganizationSettingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.organizationSettings != null && message.hasOwnProperty("organizationSettings")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.verify(message.organizationSettings);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.verify(message.organizationSettings, long + 1);
                                 if (error)
                                     return "organizationSettings." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -84138,19 +87527,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.UpdateOrganizationSettingsRequest} UpdateOrganizationSettingsRequest
                          */
-                        UpdateOrganizationSettingsRequest.fromObject = function fromObject(object) {
+                        UpdateOrganizationSettingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.UpdateOrganizationSettingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateOrganizationSettingsRequest();
                             if (object.organizationSettings != null) {
                                 if (typeof object.organizationSettings !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateOrganizationSettingsRequest.organizationSettings: object expected");
-                                message.organizationSettings = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.fromObject(object.organizationSettings);
+                                message.organizationSettings = $root.google.cloud.securitycenter.v1p1beta1.OrganizationSettings.fromObject(object.organizationSettings, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateOrganizationSettingsRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -84229,7 +87622,7 @@
                         function UpdateSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -84304,9 +87697,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSourceRequest.decode = function decode(reader, length, error) {
+                        UpdateSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -84314,15 +87711,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.source = $root.google.cloud.securitycenter.v1p1beta1.Source.decode(reader, reader.uint32());
+                                        message.source = $root.google.cloud.securitycenter.v1p1beta1.Source.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -84353,16 +87750,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSourceRequest.verify = function verify(message) {
+                        UpdateSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.source != null && message.hasOwnProperty("source")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.Source.verify(message.source);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.Source.verify(message.source, long + 1);
                                 if (error)
                                     return "source." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -84377,19 +87778,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.UpdateSourceRequest} UpdateSourceRequest
                          */
-                        UpdateSourceRequest.fromObject = function fromObject(object) {
+                        UpdateSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.UpdateSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateSourceRequest();
                             if (object.source != null) {
                                 if (typeof object.source !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateSourceRequest.source: object expected");
-                                message.source = $root.google.cloud.securitycenter.v1p1beta1.Source.fromObject(object.source);
+                                message.source = $root.google.cloud.securitycenter.v1p1beta1.Source.fromObject(object.source, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateSourceRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -84469,7 +87874,7 @@
                         function UpdateSecurityMarksRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -84554,9 +87959,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSecurityMarksRequest.decode = function decode(reader, length, error) {
+                        UpdateSecurityMarksRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateSecurityMarksRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -84564,19 +87973,19 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -84607,21 +88016,25 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSecurityMarksRequest.verify = function verify(message) {
+                        UpdateSecurityMarksRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
                             if (message.startTime != null && message.hasOwnProperty("startTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1);
                                 if (error)
                                     return "startTime." + error;
                             }
@@ -84636,24 +88049,28 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.UpdateSecurityMarksRequest} UpdateSecurityMarksRequest
                          */
-                        UpdateSecurityMarksRequest.fromObject = function fromObject(object) {
+                        UpdateSecurityMarksRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.UpdateSecurityMarksRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.UpdateSecurityMarksRequest();
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateSecurityMarksRequest.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v1p1beta1.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateSecurityMarksRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             if (object.startTime != null) {
                                 if (typeof object.startTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v1p1beta1.UpdateSecurityMarksRequest.startTime: object expected");
-                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1);
                             }
                             return message;
                         };
@@ -84737,7 +88154,7 @@
                         function Source(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -84832,9 +88249,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Source.decode = function decode(reader, length, error) {
+                        Source.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v1p1beta1.Source();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -84858,7 +88279,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -84889,9 +88310,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Source.verify = function verify(message) {
+                        Source.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -84915,9 +88340,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v1p1beta1.Source} Source
                          */
-                        Source.fromObject = function fromObject(object) {
+                        Source.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v1p1beta1.Source)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v1p1beta1.Source();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -85032,7 +88461,7 @@
                             this.serviceAccountDelegationInfo = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -85198,9 +88627,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Access.decode = function decode(reader, length, error) {
+                        Access.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Access();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -85216,7 +88649,7 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.callerIpGeo = $root.google.cloud.securitycenter.v2.Geolocation.decode(reader, reader.uint32());
+                                        message.callerIpGeo = $root.google.cloud.securitycenter.v2.Geolocation.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
@@ -85246,7 +88679,7 @@
                                 case 10: {
                                         if (!(message.serviceAccountDelegationInfo && message.serviceAccountDelegationInfo.length))
                                             message.serviceAccountDelegationInfo = [];
-                                        message.serviceAccountDelegationInfo.push($root.google.cloud.securitycenter.v2.ServiceAccountDelegationInfo.decode(reader, reader.uint32()));
+                                        message.serviceAccountDelegationInfo.push($root.google.cloud.securitycenter.v2.ServiceAccountDelegationInfo.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 11: {
@@ -85254,7 +88687,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -85285,9 +88718,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Access.verify = function verify(message) {
+                        Access.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.principalEmail != null && message.hasOwnProperty("principalEmail"))
                                 if (!$util.isString(message.principalEmail))
                                     return "principalEmail: string expected";
@@ -85295,7 +88732,7 @@
                                 if (!$util.isString(message.callerIp))
                                     return "callerIp: string expected";
                             if (message.callerIpGeo != null && message.hasOwnProperty("callerIpGeo")) {
-                                var error = $root.google.cloud.securitycenter.v2.Geolocation.verify(message.callerIpGeo);
+                                var error = $root.google.cloud.securitycenter.v2.Geolocation.verify(message.callerIpGeo, long + 1);
                                 if (error)
                                     return "callerIpGeo." + error;
                             }
@@ -85321,7 +88758,7 @@
                                 if (!Array.isArray(message.serviceAccountDelegationInfo))
                                     return "serviceAccountDelegationInfo: array expected";
                                 for (var i = 0; i < message.serviceAccountDelegationInfo.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ServiceAccountDelegationInfo.verify(message.serviceAccountDelegationInfo[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ServiceAccountDelegationInfo.verify(message.serviceAccountDelegationInfo[i], long + 1);
                                     if (error)
                                         return "serviceAccountDelegationInfo." + error;
                                 }
@@ -85340,9 +88777,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Access} Access
                          */
-                        Access.fromObject = function fromObject(object) {
+                        Access.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Access)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Access();
                             if (object.principalEmail != null)
                                 message.principalEmail = String(object.principalEmail);
@@ -85351,7 +88792,7 @@
                             if (object.callerIpGeo != null) {
                                 if (typeof object.callerIpGeo !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Access.callerIpGeo: object expected");
-                                message.callerIpGeo = $root.google.cloud.securitycenter.v2.Geolocation.fromObject(object.callerIpGeo);
+                                message.callerIpGeo = $root.google.cloud.securitycenter.v2.Geolocation.fromObject(object.callerIpGeo, long + 1);
                             }
                             if (object.userAgentFamily != null)
                                 message.userAgentFamily = String(object.userAgentFamily);
@@ -85372,7 +88813,7 @@
                                 for (var i = 0; i < object.serviceAccountDelegationInfo.length; ++i) {
                                     if (typeof object.serviceAccountDelegationInfo[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Access.serviceAccountDelegationInfo: object expected");
-                                    message.serviceAccountDelegationInfo[i] = $root.google.cloud.securitycenter.v2.ServiceAccountDelegationInfo.fromObject(object.serviceAccountDelegationInfo[i]);
+                                    message.serviceAccountDelegationInfo[i] = $root.google.cloud.securitycenter.v2.ServiceAccountDelegationInfo.fromObject(object.serviceAccountDelegationInfo[i], long + 1);
                                 }
                             }
                             if (object.userName != null)
@@ -85485,7 +88926,7 @@
                         function ServiceAccountDelegationInfo(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -85560,9 +89001,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ServiceAccountDelegationInfo.decode = function decode(reader, length, error) {
+                        ServiceAccountDelegationInfo.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ServiceAccountDelegationInfo();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -85578,7 +89023,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -85609,9 +89054,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ServiceAccountDelegationInfo.verify = function verify(message) {
+                        ServiceAccountDelegationInfo.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.principalEmail != null && message.hasOwnProperty("principalEmail"))
                                 if (!$util.isString(message.principalEmail))
                                     return "principalEmail: string expected";
@@ -85629,9 +89078,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ServiceAccountDelegationInfo} ServiceAccountDelegationInfo
                          */
-                        ServiceAccountDelegationInfo.fromObject = function fromObject(object) {
+                        ServiceAccountDelegationInfo.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ServiceAccountDelegationInfo)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ServiceAccountDelegationInfo();
                             if (object.principalEmail != null)
                                 message.principalEmail = String(object.principalEmail);
@@ -85713,7 +89166,7 @@
                         function Geolocation(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -85778,9 +89231,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Geolocation.decode = function decode(reader, length, error) {
+                        Geolocation.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Geolocation();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -85792,7 +89249,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -85823,9 +89280,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Geolocation.verify = function verify(message) {
+                        Geolocation.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.regionCode != null && message.hasOwnProperty("regionCode"))
                                 if (!$util.isString(message.regionCode))
                                     return "regionCode: string expected";
@@ -85840,9 +89301,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Geolocation} Geolocation
                          */
-                        Geolocation.fromObject = function fromObject(object) {
+                        Geolocation.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Geolocation)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Geolocation();
                             if (object.regionCode != null)
                                 message.regionCode = String(object.regionCode);
@@ -85918,7 +89383,7 @@
                         function AffectedResources(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -85983,9 +89448,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AffectedResources.decode = function decode(reader, length, error) {
+                        AffectedResources.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AffectedResources();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -85997,7 +89466,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -86028,9 +89497,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AffectedResources.verify = function verify(message) {
+                        AffectedResources.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.count != null && message.hasOwnProperty("count"))
                                 if (!$util.isInteger(message.count) && !(message.count && $util.isInteger(message.count.low) && $util.isInteger(message.count.high)))
                                     return "count: integer|Long expected";
@@ -86045,9 +89518,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.AffectedResources} AffectedResources
                          */
-                        AffectedResources.fromObject = function fromObject(object) {
+                        AffectedResources.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.AffectedResources)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.AffectedResources();
                             if (object.count != null)
                                 if ($util.Long)
@@ -86143,7 +89620,7 @@
                         function AiModel(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -86268,9 +89745,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AiModel.decode = function decode(reader, length, error) {
+                        AiModel.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AiModel();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -86306,7 +89787,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -86337,9 +89818,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AiModel.verify = function verify(message) {
+                        AiModel.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -86380,9 +89865,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.AiModel} AiModel
                          */
-                        AiModel.fromObject = function fromObject(object) {
+                        AiModel.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.AiModel)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.AiModel();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -86536,7 +90025,7 @@
                         function Application(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -86611,9 +90100,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Application.decode = function decode(reader, length, error) {
+                        Application.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Application();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -86629,7 +90122,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -86660,9 +90153,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Application.verify = function verify(message) {
+                        Application.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.baseUri != null && message.hasOwnProperty("baseUri"))
                                 if (!$util.isString(message.baseUri))
                                     return "baseUri: string expected";
@@ -86680,9 +90177,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Application} Application
                          */
-                        Application.fromObject = function fromObject(object) {
+                        Application.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Application)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Application();
                             if (object.baseUri != null)
                                 message.baseUri = String(object.baseUri);
@@ -86770,7 +90271,7 @@
                         function AttackExposure(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -86895,9 +90396,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AttackExposure.decode = function decode(reader, length, error) {
+                        AttackExposure.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AttackExposure();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -86909,7 +90414,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.latestCalculationTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.latestCalculationTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -86933,7 +90438,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -86964,14 +90469,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AttackExposure.verify = function verify(message) {
+                        AttackExposure.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.score != null && message.hasOwnProperty("score"))
                                 if (typeof message.score !== "number")
                                     return "score: number expected";
                             if (message.latestCalculationTime != null && message.hasOwnProperty("latestCalculationTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.latestCalculationTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.latestCalculationTime, long + 1);
                                 if (error)
                                     return "latestCalculationTime." + error;
                             }
@@ -87007,16 +90516,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.AttackExposure} AttackExposure
                          */
-                        AttackExposure.fromObject = function fromObject(object) {
+                        AttackExposure.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.AttackExposure)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.AttackExposure();
                             if (object.score != null)
                                 message.score = Number(object.score);
                             if (object.latestCalculationTime != null) {
                                 if (typeof object.latestCalculationTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.AttackExposure.latestCalculationTime: object expected");
-                                message.latestCalculationTime = $root.google.protobuf.Timestamp.fromObject(object.latestCalculationTime);
+                                message.latestCalculationTime = $root.google.protobuf.Timestamp.fromObject(object.latestCalculationTime, long + 1);
                             }
                             if (object.attackExposureResult != null)
                                 message.attackExposureResult = String(object.attackExposureResult);
@@ -87157,7 +90670,7 @@
                             this.edges = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -87244,9 +90757,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AttackPath.decode = function decode(reader, length, error) {
+                        AttackPath.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AttackPath();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -87260,17 +90777,17 @@
                                 case 2: {
                                         if (!(message.pathNodes && message.pathNodes.length))
                                             message.pathNodes = [];
-                                        message.pathNodes.push($root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.decode(reader, reader.uint32()));
+                                        message.pathNodes.push($root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.edges && message.edges.length))
                                             message.edges = [];
-                                        message.edges.push($root.google.cloud.securitycenter.v2.AttackPath.AttackPathEdge.decode(reader, reader.uint32()));
+                                        message.edges.push($root.google.cloud.securitycenter.v2.AttackPath.AttackPathEdge.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -87301,9 +90818,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AttackPath.verify = function verify(message) {
+                        AttackPath.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -87311,7 +90832,7 @@
                                 if (!Array.isArray(message.pathNodes))
                                     return "pathNodes: array expected";
                                 for (var i = 0; i < message.pathNodes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.verify(message.pathNodes[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.verify(message.pathNodes[i], long + 1);
                                     if (error)
                                         return "pathNodes." + error;
                                 }
@@ -87320,7 +90841,7 @@
                                 if (!Array.isArray(message.edges))
                                     return "edges: array expected";
                                 for (var i = 0; i < message.edges.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathEdge.verify(message.edges[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathEdge.verify(message.edges[i], long + 1);
                                     if (error)
                                         return "edges." + error;
                                 }
@@ -87336,9 +90857,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.AttackPath} AttackPath
                          */
-                        AttackPath.fromObject = function fromObject(object) {
+                        AttackPath.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.AttackPath)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.AttackPath();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -87349,7 +90874,7 @@
                                 for (var i = 0; i < object.pathNodes.length; ++i) {
                                     if (typeof object.pathNodes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.AttackPath.pathNodes: object expected");
-                                    message.pathNodes[i] = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.fromObject(object.pathNodes[i]);
+                                    message.pathNodes[i] = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.fromObject(object.pathNodes[i], long + 1);
                                 }
                             }
                             if (object.edges) {
@@ -87359,7 +90884,7 @@
                                 for (var i = 0; i < object.edges.length; ++i) {
                                     if (typeof object.edges[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.AttackPath.edges: object expected");
-                                    message.edges[i] = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathEdge.fromObject(object.edges[i]);
+                                    message.edges[i] = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathEdge.fromObject(object.edges[i], long + 1);
                                 }
                             }
                             return message;
@@ -87452,7 +90977,7 @@
                                 this.attackSteps = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -87569,9 +91094,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AttackPathNode.decode = function decode(reader, length, error) {
+                            AttackPathNode.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -87593,7 +91122,7 @@
                                     case 4: {
                                             if (!(message.associatedFindings && message.associatedFindings.length))
                                                 message.associatedFindings = [];
-                                            message.associatedFindings.push($root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding.decode(reader, reader.uint32()));
+                                            message.associatedFindings.push($root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     case 5: {
@@ -87603,11 +91132,11 @@
                                     case 6: {
                                             if (!(message.attackSteps && message.attackSteps.length))
                                                 message.attackSteps = [];
-                                            message.attackSteps.push($root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode.decode(reader, reader.uint32()));
+                                            message.attackSteps.push($root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -87638,9 +91167,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AttackPathNode.verify = function verify(message) {
+                            AttackPathNode.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.resource != null && message.hasOwnProperty("resource"))
                                     if (!$util.isString(message.resource))
                                         return "resource: string expected";
@@ -87654,7 +91187,7 @@
                                     if (!Array.isArray(message.associatedFindings))
                                         return "associatedFindings: array expected";
                                     for (var i = 0; i < message.associatedFindings.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding.verify(message.associatedFindings[i]);
+                                        var error = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding.verify(message.associatedFindings[i], long + 1);
                                         if (error)
                                             return "associatedFindings." + error;
                                     }
@@ -87666,7 +91199,7 @@
                                     if (!Array.isArray(message.attackSteps))
                                         return "attackSteps: array expected";
                                     for (var i = 0; i < message.attackSteps.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode.verify(message.attackSteps[i]);
+                                        var error = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode.verify(message.attackSteps[i], long + 1);
                                         if (error)
                                             return "attackSteps." + error;
                                     }
@@ -87682,9 +91215,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.AttackPath.AttackPathNode} AttackPathNode
                              */
-                            AttackPathNode.fromObject = function fromObject(object) {
+                            AttackPathNode.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode();
                                 if (object.resource != null)
                                     message.resource = String(object.resource);
@@ -87699,7 +91236,7 @@
                                     for (var i = 0; i < object.associatedFindings.length; ++i) {
                                         if (typeof object.associatedFindings[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.AttackPath.AttackPathNode.associatedFindings: object expected");
-                                        message.associatedFindings[i] = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding.fromObject(object.associatedFindings[i]);
+                                        message.associatedFindings[i] = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding.fromObject(object.associatedFindings[i], long + 1);
                                     }
                                 }
                                 if (object.uuid != null)
@@ -87711,7 +91248,7 @@
                                     for (var i = 0; i < object.attackSteps.length; ++i) {
                                         if (typeof object.attackSteps[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.AttackPath.AttackPathNode.attackSteps: object expected");
-                                        message.attackSteps[i] = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode.fromObject(object.attackSteps[i]);
+                                        message.attackSteps[i] = $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode.fromObject(object.attackSteps[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -87809,7 +91346,7 @@
                                 function PathNodeAssociatedFinding(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -87894,9 +91431,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                PathNodeAssociatedFinding.decode = function decode(reader, length, error) {
+                                PathNodeAssociatedFinding.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -87916,7 +91457,7 @@
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -87947,9 +91488,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                PathNodeAssociatedFinding.verify = function verify(message) {
+                                PathNodeAssociatedFinding.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.canonicalFinding != null && message.hasOwnProperty("canonicalFinding"))
                                         if (!$util.isString(message.canonicalFinding))
                                             return "canonicalFinding: string expected";
@@ -87970,9 +91515,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding} PathNodeAssociatedFinding
                                  */
-                                PathNodeAssociatedFinding.fromObject = function fromObject(object) {
+                                PathNodeAssociatedFinding.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.PathNodeAssociatedFinding();
                                     if (object.canonicalFinding != null)
                                         message.canonicalFinding = String(object.canonicalFinding);
@@ -88084,7 +91633,7 @@
                                     this.labels = {};
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -88190,9 +91739,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                AttackStepNode.decode = function decode(reader, length, error) {
+                                AttackStepNode.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode(), key, value;
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -88227,10 +91780,12 @@
                                                         value = reader.string();
                                                         break;
                                                     default:
-                                                        reader.skipType(tag2 & 7);
+                                                        reader.skipType(tag2 & 7, long);
                                                         break;
                                                     }
                                                 }
+                                                if (key === "__proto__")
+                                                    $util.makeProp(message.labels, key);
                                                 message.labels[key] = value;
                                                 break;
                                             }
@@ -88239,7 +91794,7 @@
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -88270,9 +91825,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                AttackStepNode.verify = function verify(message) {
+                                AttackStepNode.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.uuid != null && message.hasOwnProperty("uuid"))
                                         if (!$util.isString(message.uuid))
                                             return "uuid: string expected";
@@ -88312,9 +91871,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode} AttackStepNode
                                  */
-                                AttackStepNode.fromObject = function fromObject(object) {
+                                AttackStepNode.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode();
                                     if (object.uuid != null)
                                         message.uuid = String(object.uuid);
@@ -88352,8 +91915,11 @@
                                         if (typeof object.labels !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.AttackPath.AttackPathNode.AttackStepNode.labels: object expected");
                                         message.labels = {};
-                                        for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i)
+                                        for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) {
+                                            if (keys[i] === "__proto__")
+                                                $util.makeProp(message.labels, keys[i]);
                                             message.labels[keys[i]] = String(object.labels[keys[i]]);
+                                        }
                                     }
                                     if (object.description != null)
                                         message.description = String(object.description);
@@ -88390,8 +91956,11 @@
                                     var keys2;
                                     if (message.labels && (keys2 = Object.keys(message.labels)).length) {
                                         object.labels = {};
-                                        for (var j = 0; j < keys2.length; ++j)
+                                        for (var j = 0; j < keys2.length; ++j) {
+                                            if (keys2[j] === "__proto__")
+                                                $util.makeProp(object.labels, keys2[j]);
                                             object.labels[keys2[j]] = message.labels[keys2[j]];
+                                        }
                                     }
                                     if (message.description != null && message.hasOwnProperty("description"))
                                         object.description = message.description;
@@ -88451,7 +92020,7 @@
                             function AttackPathEdge(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -88526,9 +92095,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AttackPathEdge.decode = function decode(reader, length, error) {
+                            AttackPathEdge.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AttackPath.AttackPathEdge();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -88544,7 +92117,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -88575,9 +92148,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AttackPathEdge.verify = function verify(message) {
+                            AttackPathEdge.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.source != null && message.hasOwnProperty("source"))
                                     if (!$util.isString(message.source))
                                         return "source: string expected";
@@ -88595,9 +92172,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.AttackPath.AttackPathEdge} AttackPathEdge
                              */
-                            AttackPathEdge.fromObject = function fromObject(object) {
+                            AttackPathEdge.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.AttackPath.AttackPathEdge)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.AttackPath.AttackPathEdge();
                                 if (object.source != null)
                                     message.source = String(object.source);
@@ -88694,7 +92275,7 @@
                             this.policyOptions = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -88852,9 +92433,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BackupDisasterRecovery.decode = function decode(reader, length, error) {
+                        BackupDisasterRecovery.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.BackupDisasterRecovery();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -88904,11 +92489,11 @@
                                         break;
                                     }
                                 case 10: {
-                                        message.backupCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.backupCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -88939,9 +92524,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BackupDisasterRecovery.verify = function verify(message) {
+                        BackupDisasterRecovery.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.backupTemplate != null && message.hasOwnProperty("backupTemplate"))
                                 if (!$util.isString(message.backupTemplate))
                                     return "backupTemplate: string expected";
@@ -88982,7 +92571,7 @@
                                 if (!$util.isString(message.backupType))
                                     return "backupType: string expected";
                             if (message.backupCreateTime != null && message.hasOwnProperty("backupCreateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.backupCreateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.backupCreateTime, long + 1);
                                 if (error)
                                     return "backupCreateTime." + error;
                             }
@@ -88997,9 +92586,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.BackupDisasterRecovery} BackupDisasterRecovery
                          */
-                        BackupDisasterRecovery.fromObject = function fromObject(object) {
+                        BackupDisasterRecovery.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.BackupDisasterRecovery)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.BackupDisasterRecovery();
                             if (object.backupTemplate != null)
                                 message.backupTemplate = String(object.backupTemplate);
@@ -89037,7 +92630,7 @@
                             if (object.backupCreateTime != null) {
                                 if (typeof object.backupCreateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.BackupDisasterRecovery.backupCreateTime: object expected");
-                                message.backupCreateTime = $root.google.protobuf.Timestamp.fromObject(object.backupCreateTime);
+                                message.backupCreateTime = $root.google.protobuf.Timestamp.fromObject(object.backupCreateTime, long + 1);
                             }
                             return message;
                         };
@@ -89157,7 +92750,7 @@
                         function BigQueryExport(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -89292,9 +92885,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BigQueryExport.decode = function decode(reader, length, error) {
+                        BigQueryExport.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.BigQueryExport();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -89318,11 +92915,11 @@
                                         break;
                                     }
                                 case 5: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
@@ -89334,7 +92931,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -89365,9 +92962,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BigQueryExport.verify = function verify(message) {
+                        BigQueryExport.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -89381,12 +92982,12 @@
                                 if (!$util.isString(message.dataset))
                                     return "dataset: string expected";
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -89407,9 +93008,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.BigQueryExport} BigQueryExport
                          */
-                        BigQueryExport.fromObject = function fromObject(object) {
+                        BigQueryExport.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.BigQueryExport)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.BigQueryExport();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -89422,12 +93027,12 @@
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.BigQueryExport.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.BigQueryExport.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.mostRecentEditor != null)
                                 message.mostRecentEditor = String(object.mostRecentEditor);
@@ -89528,7 +93133,7 @@
                             this.relatedFindings = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -89594,9 +93199,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Chokepoint.decode = function decode(reader, length, error) {
+                        Chokepoint.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Chokepoint();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -89610,7 +93219,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -89641,9 +93250,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Chokepoint.verify = function verify(message) {
+                        Chokepoint.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.relatedFindings != null && message.hasOwnProperty("relatedFindings")) {
                                 if (!Array.isArray(message.relatedFindings))
                                     return "relatedFindings: array expected";
@@ -89662,9 +93275,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Chokepoint} Chokepoint
                          */
-                        Chokepoint.fromObject = function fromObject(object) {
+                        Chokepoint.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Chokepoint)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Chokepoint();
                             if (object.relatedFindings) {
                                 if (!Array.isArray(object.relatedFindings))
@@ -89753,7 +93370,7 @@
                         function CloudArmor(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -89868,9 +93485,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CloudArmor.decode = function decode(reader, length, error) {
+                        CloudArmor.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CloudArmor();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -89878,19 +93499,19 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.securityPolicy = $root.google.cloud.securitycenter.v2.SecurityPolicy.decode(reader, reader.uint32());
+                                        message.securityPolicy = $root.google.cloud.securitycenter.v2.SecurityPolicy.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.requests = $root.google.cloud.securitycenter.v2.Requests.decode(reader, reader.uint32());
+                                        message.requests = $root.google.cloud.securitycenter.v2.Requests.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.adaptiveProtection = $root.google.cloud.securitycenter.v2.AdaptiveProtection.decode(reader, reader.uint32());
+                                        message.adaptiveProtection = $root.google.cloud.securitycenter.v2.AdaptiveProtection.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
-                                        message.attack = $root.google.cloud.securitycenter.v2.Attack.decode(reader, reader.uint32());
+                                        message.attack = $root.google.cloud.securitycenter.v2.Attack.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
@@ -89898,11 +93519,11 @@
                                         break;
                                     }
                                 case 6: {
-                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.duration = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -89933,26 +93554,30 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CloudArmor.verify = function verify(message) {
+                        CloudArmor.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityPolicy != null && message.hasOwnProperty("securityPolicy")) {
-                                var error = $root.google.cloud.securitycenter.v2.SecurityPolicy.verify(message.securityPolicy);
+                                var error = $root.google.cloud.securitycenter.v2.SecurityPolicy.verify(message.securityPolicy, long + 1);
                                 if (error)
                                     return "securityPolicy." + error;
                             }
                             if (message.requests != null && message.hasOwnProperty("requests")) {
-                                var error = $root.google.cloud.securitycenter.v2.Requests.verify(message.requests);
+                                var error = $root.google.cloud.securitycenter.v2.Requests.verify(message.requests, long + 1);
                                 if (error)
                                     return "requests." + error;
                             }
                             if (message.adaptiveProtection != null && message.hasOwnProperty("adaptiveProtection")) {
-                                var error = $root.google.cloud.securitycenter.v2.AdaptiveProtection.verify(message.adaptiveProtection);
+                                var error = $root.google.cloud.securitycenter.v2.AdaptiveProtection.verify(message.adaptiveProtection, long + 1);
                                 if (error)
                                     return "adaptiveProtection." + error;
                             }
                             if (message.attack != null && message.hasOwnProperty("attack")) {
-                                var error = $root.google.cloud.securitycenter.v2.Attack.verify(message.attack);
+                                var error = $root.google.cloud.securitycenter.v2.Attack.verify(message.attack, long + 1);
                                 if (error)
                                     return "attack." + error;
                             }
@@ -89960,7 +93585,7 @@
                                 if (!$util.isString(message.threatVector))
                                     return "threatVector: string expected";
                             if (message.duration != null && message.hasOwnProperty("duration")) {
-                                var error = $root.google.protobuf.Duration.verify(message.duration);
+                                var error = $root.google.protobuf.Duration.verify(message.duration, long + 1);
                                 if (error)
                                     return "duration." + error;
                             }
@@ -89975,36 +93600,40 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CloudArmor} CloudArmor
                          */
-                        CloudArmor.fromObject = function fromObject(object) {
+                        CloudArmor.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CloudArmor)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CloudArmor();
                             if (object.securityPolicy != null) {
                                 if (typeof object.securityPolicy !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CloudArmor.securityPolicy: object expected");
-                                message.securityPolicy = $root.google.cloud.securitycenter.v2.SecurityPolicy.fromObject(object.securityPolicy);
+                                message.securityPolicy = $root.google.cloud.securitycenter.v2.SecurityPolicy.fromObject(object.securityPolicy, long + 1);
                             }
                             if (object.requests != null) {
                                 if (typeof object.requests !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CloudArmor.requests: object expected");
-                                message.requests = $root.google.cloud.securitycenter.v2.Requests.fromObject(object.requests);
+                                message.requests = $root.google.cloud.securitycenter.v2.Requests.fromObject(object.requests, long + 1);
                             }
                             if (object.adaptiveProtection != null) {
                                 if (typeof object.adaptiveProtection !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CloudArmor.adaptiveProtection: object expected");
-                                message.adaptiveProtection = $root.google.cloud.securitycenter.v2.AdaptiveProtection.fromObject(object.adaptiveProtection);
+                                message.adaptiveProtection = $root.google.cloud.securitycenter.v2.AdaptiveProtection.fromObject(object.adaptiveProtection, long + 1);
                             }
                             if (object.attack != null) {
                                 if (typeof object.attack !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CloudArmor.attack: object expected");
-                                message.attack = $root.google.cloud.securitycenter.v2.Attack.fromObject(object.attack);
+                                message.attack = $root.google.cloud.securitycenter.v2.Attack.fromObject(object.attack, long + 1);
                             }
                             if (object.threatVector != null)
                                 message.threatVector = String(object.threatVector);
                             if (object.duration != null) {
                                 if (typeof object.duration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CloudArmor.duration: object expected");
-                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration);
+                                message.duration = $root.google.protobuf.Duration.fromObject(object.duration, long + 1);
                             }
                             return message;
                         };
@@ -90096,7 +93725,7 @@
                         function SecurityPolicy(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -90181,9 +93810,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityPolicy.decode = function decode(reader, length, error) {
+                        SecurityPolicy.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.SecurityPolicy();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -90203,7 +93836,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -90234,9 +93867,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityPolicy.verify = function verify(message) {
+                        SecurityPolicy.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -90257,9 +93894,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.SecurityPolicy} SecurityPolicy
                          */
-                        SecurityPolicy.fromObject = function fromObject(object) {
+                        SecurityPolicy.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.SecurityPolicy)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.SecurityPolicy();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -90349,7 +93990,7 @@
                         function Requests(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -90444,9 +94085,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Requests.decode = function decode(reader, length, error) {
+                        Requests.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Requests();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -90470,7 +94115,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -90501,9 +94146,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Requests.verify = function verify(message) {
+                        Requests.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.ratio != null && message.hasOwnProperty("ratio"))
                                 if (typeof message.ratio !== "number")
                                     return "ratio: number expected";
@@ -90527,9 +94176,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Requests} Requests
                          */
-                        Requests.fromObject = function fromObject(object) {
+                        Requests.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Requests)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Requests();
                             if (object.ratio != null)
                                 message.ratio = Number(object.ratio);
@@ -90621,7 +94274,7 @@
                         function AdaptiveProtection(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -90686,9 +94339,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AdaptiveProtection.decode = function decode(reader, length, error) {
+                        AdaptiveProtection.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AdaptiveProtection();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -90700,7 +94357,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -90731,9 +94388,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AdaptiveProtection.verify = function verify(message) {
+                        AdaptiveProtection.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.confidence != null && message.hasOwnProperty("confidence"))
                                 if (typeof message.confidence !== "number")
                                     return "confidence: number expected";
@@ -90748,9 +94409,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.AdaptiveProtection} AdaptiveProtection
                          */
-                        AdaptiveProtection.fromObject = function fromObject(object) {
+                        AdaptiveProtection.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.AdaptiveProtection)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.AdaptiveProtection();
                             if (object.confidence != null)
                                 message.confidence = Number(object.confidence);
@@ -90830,7 +94495,7 @@
                         function Attack(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -90935,9 +94600,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Attack.decode = function decode(reader, length, error) {
+                        Attack.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Attack();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -90965,7 +94634,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -90996,9 +94665,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Attack.verify = function verify(message) {
+                        Attack.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.volumePpsLong != null && message.hasOwnProperty("volumePpsLong"))
                                 if (!$util.isInteger(message.volumePpsLong) && !(message.volumePpsLong && $util.isInteger(message.volumePpsLong.low) && $util.isInteger(message.volumePpsLong.high)))
                                     return "volumePpsLong: integer|Long expected";
@@ -91025,9 +94698,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Attack} Attack
                          */
-                        Attack.fromObject = function fromObject(object) {
+                        Attack.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Attack)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Attack();
                             if (object.volumePpsLong != null)
                                 if ($util.Long)
@@ -91153,7 +94830,7 @@
                         function CloudDlpDataProfile(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -91228,9 +94905,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CloudDlpDataProfile.decode = function decode(reader, length, error) {
+                        CloudDlpDataProfile.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CloudDlpDataProfile();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -91246,7 +94927,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -91277,9 +94958,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CloudDlpDataProfile.verify = function verify(message) {
+                        CloudDlpDataProfile.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.dataProfile != null && message.hasOwnProperty("dataProfile"))
                                 if (!$util.isString(message.dataProfile))
                                     return "dataProfile: string expected";
@@ -91303,9 +94988,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CloudDlpDataProfile} CloudDlpDataProfile
                          */
-                        CloudDlpDataProfile.fromObject = function fromObject(object) {
+                        CloudDlpDataProfile.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CloudDlpDataProfile)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CloudDlpDataProfile();
                             if (object.dataProfile != null)
                                 message.dataProfile = String(object.dataProfile);
@@ -91424,7 +95113,7 @@
                         function CloudDlpInspection(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -91519,9 +95208,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CloudDlpInspection.decode = function decode(reader, length, error) {
+                        CloudDlpInspection.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CloudDlpInspection();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -91545,7 +95238,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -91576,9 +95269,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CloudDlpInspection.verify = function verify(message) {
+                        CloudDlpInspection.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.inspectJob != null && message.hasOwnProperty("inspectJob"))
                                 if (!$util.isString(message.inspectJob))
                                     return "inspectJob: string expected";
@@ -91602,9 +95299,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CloudDlpInspection} CloudDlpInspection
                          */
-                        CloudDlpInspection.fromObject = function fromObject(object) {
+                        CloudDlpInspection.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CloudDlpInspection)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CloudDlpInspection();
                             if (object.inspectJob != null)
                                 message.inspectJob = String(object.inspectJob);
@@ -91713,7 +95414,7 @@
                             this.ids = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -91799,9 +95500,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Compliance.decode = function decode(reader, length, error) {
+                        Compliance.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Compliance();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -91823,7 +95528,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -91854,9 +95559,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Compliance.verify = function verify(message) {
+                        Compliance.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.standard != null && message.hasOwnProperty("standard"))
                                 if (!$util.isString(message.standard))
                                     return "standard: string expected";
@@ -91881,9 +95590,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Compliance} Compliance
                          */
-                        Compliance.fromObject = function fromObject(object) {
+                        Compliance.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Compliance)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Compliance();
                             if (object.standard != null)
                                 message.standard = String(object.standard);
@@ -91983,7 +95696,7 @@
                         function Connection(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -92088,9 +95801,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Connection.decode = function decode(reader, length, error) {
+                        Connection.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Connection();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -92118,7 +95835,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -92149,9 +95866,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Connection.verify = function verify(message) {
+                        Connection.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.destinationIp != null && message.hasOwnProperty("destinationIp"))
                                 if (!$util.isString(message.destinationIp))
                                     return "destinationIp: string expected";
@@ -92187,9 +95908,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Connection} Connection
                          */
-                        Connection.fromObject = function fromObject(object) {
+                        Connection.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Connection)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Connection();
                             if (object.destinationIp != null)
                                 message.destinationIp = String(object.destinationIp);
@@ -92339,7 +96064,7 @@
                             this.contacts = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -92405,9 +96130,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ContactDetails.decode = function decode(reader, length, error) {
+                        ContactDetails.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ContactDetails();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -92417,11 +96146,11 @@
                                 case 1: {
                                         if (!(message.contacts && message.contacts.length))
                                             message.contacts = [];
-                                        message.contacts.push($root.google.cloud.securitycenter.v2.Contact.decode(reader, reader.uint32()));
+                                        message.contacts.push($root.google.cloud.securitycenter.v2.Contact.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -92452,14 +96181,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ContactDetails.verify = function verify(message) {
+                        ContactDetails.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.contacts != null && message.hasOwnProperty("contacts")) {
                                 if (!Array.isArray(message.contacts))
                                     return "contacts: array expected";
                                 for (var i = 0; i < message.contacts.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Contact.verify(message.contacts[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Contact.verify(message.contacts[i], long + 1);
                                     if (error)
                                         return "contacts." + error;
                                 }
@@ -92475,9 +96208,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ContactDetails} ContactDetails
                          */
-                        ContactDetails.fromObject = function fromObject(object) {
+                        ContactDetails.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ContactDetails)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ContactDetails();
                             if (object.contacts) {
                                 if (!Array.isArray(object.contacts))
@@ -92486,7 +96223,7 @@
                                 for (var i = 0; i < object.contacts.length; ++i) {
                                     if (typeof object.contacts[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ContactDetails.contacts: object expected");
-                                    message.contacts[i] = $root.google.cloud.securitycenter.v2.Contact.fromObject(object.contacts[i]);
+                                    message.contacts[i] = $root.google.cloud.securitycenter.v2.Contact.fromObject(object.contacts[i], long + 1);
                                 }
                             }
                             return message;
@@ -92564,7 +96301,7 @@
                         function Contact(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -92629,9 +96366,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Contact.decode = function decode(reader, length, error) {
+                        Contact.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Contact();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -92643,7 +96384,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -92674,9 +96415,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Contact.verify = function verify(message) {
+                        Contact.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.email != null && message.hasOwnProperty("email"))
                                 if (!$util.isString(message.email))
                                     return "email: string expected";
@@ -92691,9 +96436,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Contact} Contact
                          */
-                        Contact.fromObject = function fromObject(object) {
+                        Contact.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Contact)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Contact();
                             if (object.email != null)
                                 message.email = String(object.email);
@@ -92774,7 +96523,7 @@
                             this.labels = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -92880,9 +96629,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Container.decode = function decode(reader, length, error) {
+                        Container.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Container();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -92904,15 +96657,15 @@
                                 case 4: {
                                         if (!(message.labels && message.labels.length))
                                             message.labels = [];
-                                        message.labels.push($root.google.cloud.securitycenter.v2.Label.decode(reader, reader.uint32()));
+                                        message.labels.push($root.google.cloud.securitycenter.v2.Label.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 5: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -92943,9 +96696,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Container.verify = function verify(message) {
+                        Container.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -92959,13 +96716,13 @@
                                 if (!Array.isArray(message.labels))
                                     return "labels: array expected";
                                 for (var i = 0; i < message.labels.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Label.verify(message.labels[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Label.verify(message.labels[i], long + 1);
                                     if (error)
                                         return "labels." + error;
                                 }
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
@@ -92980,9 +96737,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Container} Container
                          */
-                        Container.fromObject = function fromObject(object) {
+                        Container.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Container)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Container();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -92997,13 +96758,13 @@
                                 for (var i = 0; i < object.labels.length; ++i) {
                                     if (typeof object.labels[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Container.labels: object expected");
-                                    message.labels[i] = $root.google.cloud.securitycenter.v2.Label.fromObject(object.labels[i]);
+                                    message.labels[i] = $root.google.cloud.securitycenter.v2.Label.fromObject(object.labels[i], long + 1);
                                 }
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Container.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             return message;
                         };
@@ -93095,7 +96856,7 @@
                         function Label(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -93170,9 +96931,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Label.decode = function decode(reader, length, error) {
+                        Label.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Label();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -93188,7 +96953,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -93219,9 +96984,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Label.verify = function verify(message) {
+                        Label.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -93239,9 +97008,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Label} Label
                          */
-                        Label.fromObject = function fromObject(object) {
+                        Label.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Label)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Label();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -93326,7 +97099,7 @@
                         function DataAccessEvent(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -93421,9 +97194,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DataAccessEvent.decode = function decode(reader, length, error) {
+                        DataAccessEvent.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.DataAccessEvent();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -93443,11 +97220,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -93478,9 +97255,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DataAccessEvent.verify = function verify(message) {
+                        DataAccessEvent.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.eventId != null && message.hasOwnProperty("eventId"))
                                 if (!$util.isString(message.eventId))
                                     return "eventId: string expected";
@@ -93498,7 +97279,7 @@
                                     break;
                                 }
                             if (message.eventTime != null && message.hasOwnProperty("eventTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime, long + 1);
                                 if (error)
                                     return "eventTime." + error;
                             }
@@ -93513,9 +97294,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.DataAccessEvent} DataAccessEvent
                          */
-                        DataAccessEvent.fromObject = function fromObject(object) {
+                        DataAccessEvent.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.DataAccessEvent)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.DataAccessEvent();
                             if (object.eventId != null)
                                 message.eventId = String(object.eventId);
@@ -93548,7 +97333,7 @@
                             if (object.eventTime != null) {
                                 if (typeof object.eventTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.DataAccessEvent.eventTime: object expected");
-                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime);
+                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime, long + 1);
                             }
                             return message;
                         };
@@ -93654,7 +97439,7 @@
                         function DataFlowEvent(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -93759,9 +97544,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DataFlowEvent.decode = function decode(reader, length, error) {
+                        DataFlowEvent.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.DataFlowEvent();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -93785,11 +97574,11 @@
                                         break;
                                     }
                                 case 5: {
-                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -93820,9 +97609,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DataFlowEvent.verify = function verify(message) {
+                        DataFlowEvent.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.eventId != null && message.hasOwnProperty("eventId"))
                                 if (!$util.isString(message.eventId))
                                     return "eventId: string expected";
@@ -93843,7 +97636,7 @@
                                 if (!$util.isString(message.violatedLocation))
                                     return "violatedLocation: string expected";
                             if (message.eventTime != null && message.hasOwnProperty("eventTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime, long + 1);
                                 if (error)
                                     return "eventTime." + error;
                             }
@@ -93858,9 +97651,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.DataFlowEvent} DataFlowEvent
                          */
-                        DataFlowEvent.fromObject = function fromObject(object) {
+                        DataFlowEvent.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.DataFlowEvent)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.DataFlowEvent();
                             if (object.eventId != null)
                                 message.eventId = String(object.eventId);
@@ -93895,7 +97692,7 @@
                             if (object.eventTime != null) {
                                 if (typeof object.eventTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.DataFlowEvent.eventTime: object expected");
-                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime);
+                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime, long + 1);
                             }
                             return message;
                         };
@@ -94003,7 +97800,7 @@
                         function DataRetentionDeletionEvent(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -94098,9 +97895,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DataRetentionDeletionEvent.decode = function decode(reader, length, error) {
+                        DataRetentionDeletionEvent.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.DataRetentionDeletionEvent();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -94108,7 +97909,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 2: {
-                                        message.eventDetectionTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.eventDetectionTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -94116,7 +97917,7 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.maxRetentionAllowed = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                        message.maxRetentionAllowed = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
@@ -94124,7 +97925,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -94155,11 +97956,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DataRetentionDeletionEvent.verify = function verify(message) {
+                        DataRetentionDeletionEvent.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.eventDetectionTime != null && message.hasOwnProperty("eventDetectionTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.eventDetectionTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.eventDetectionTime, long + 1);
                                 if (error)
                                     return "eventDetectionTime." + error;
                             }
@@ -94167,7 +97972,7 @@
                                 if (!$util.isInteger(message.dataObjectCount) && !(message.dataObjectCount && $util.isInteger(message.dataObjectCount.low) && $util.isInteger(message.dataObjectCount.high)))
                                     return "dataObjectCount: integer|Long expected";
                             if (message.maxRetentionAllowed != null && message.hasOwnProperty("maxRetentionAllowed")) {
-                                var error = $root.google.protobuf.Duration.verify(message.maxRetentionAllowed);
+                                var error = $root.google.protobuf.Duration.verify(message.maxRetentionAllowed, long + 1);
                                 if (error)
                                     return "maxRetentionAllowed." + error;
                             }
@@ -94190,14 +97995,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.DataRetentionDeletionEvent} DataRetentionDeletionEvent
                          */
-                        DataRetentionDeletionEvent.fromObject = function fromObject(object) {
+                        DataRetentionDeletionEvent.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.DataRetentionDeletionEvent)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.DataRetentionDeletionEvent();
                             if (object.eventDetectionTime != null) {
                                 if (typeof object.eventDetectionTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.DataRetentionDeletionEvent.eventDetectionTime: object expected");
-                                message.eventDetectionTime = $root.google.protobuf.Timestamp.fromObject(object.eventDetectionTime);
+                                message.eventDetectionTime = $root.google.protobuf.Timestamp.fromObject(object.eventDetectionTime, long + 1);
                             }
                             if (object.dataObjectCount != null)
                                 if ($util.Long)
@@ -94211,7 +98020,7 @@
                             if (object.maxRetentionAllowed != null) {
                                 if (typeof object.maxRetentionAllowed !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.DataRetentionDeletionEvent.maxRetentionAllowed: object expected");
-                                message.maxRetentionAllowed = $root.google.protobuf.Duration.fromObject(object.maxRetentionAllowed);
+                                message.maxRetentionAllowed = $root.google.protobuf.Duration.fromObject(object.maxRetentionAllowed, long + 1);
                             }
                             switch (object.eventType) {
                             default:
@@ -94338,7 +98147,7 @@
                             this.grantees = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -94454,9 +98263,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Database.decode = function decode(reader, length, error) {
+                        Database.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Database();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -94490,7 +98303,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -94521,9 +98334,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Database.verify = function verify(message) {
+                        Database.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -94557,9 +98374,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Database} Database
                          */
-                        Database.fromObject = function fromObject(object) {
+                        Database.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Database)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Database();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -94670,7 +98491,7 @@
                         function Disk(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -94735,9 +98556,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Disk.decode = function decode(reader, length, error) {
+                        Disk.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Disk();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -94749,7 +98574,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -94780,9 +98605,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Disk.verify = function verify(message) {
+                        Disk.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -94797,9 +98626,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Disk} Disk
                          */
-                        Disk.fromObject = function fromObject(object) {
+                        Disk.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Disk)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Disk();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -94879,7 +98712,7 @@
                             this.targets = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -94966,9 +98799,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Exfiltration.decode = function decode(reader, length, error) {
+                        Exfiltration.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Exfiltration();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -94978,13 +98815,13 @@
                                 case 1: {
                                         if (!(message.sources && message.sources.length))
                                             message.sources = [];
-                                        message.sources.push($root.google.cloud.securitycenter.v2.ExfilResource.decode(reader, reader.uint32()));
+                                        message.sources.push($root.google.cloud.securitycenter.v2.ExfilResource.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
                                         if (!(message.targets && message.targets.length))
                                             message.targets = [];
-                                        message.targets.push($root.google.cloud.securitycenter.v2.ExfilResource.decode(reader, reader.uint32()));
+                                        message.targets.push($root.google.cloud.securitycenter.v2.ExfilResource.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
@@ -94992,7 +98829,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -95023,14 +98860,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Exfiltration.verify = function verify(message) {
+                        Exfiltration.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.sources != null && message.hasOwnProperty("sources")) {
                                 if (!Array.isArray(message.sources))
                                     return "sources: array expected";
                                 for (var i = 0; i < message.sources.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ExfilResource.verify(message.sources[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ExfilResource.verify(message.sources[i], long + 1);
                                     if (error)
                                         return "sources." + error;
                                 }
@@ -95039,7 +98880,7 @@
                                 if (!Array.isArray(message.targets))
                                     return "targets: array expected";
                                 for (var i = 0; i < message.targets.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ExfilResource.verify(message.targets[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ExfilResource.verify(message.targets[i], long + 1);
                                     if (error)
                                         return "targets." + error;
                                 }
@@ -95058,9 +98899,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Exfiltration} Exfiltration
                          */
-                        Exfiltration.fromObject = function fromObject(object) {
+                        Exfiltration.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Exfiltration)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Exfiltration();
                             if (object.sources) {
                                 if (!Array.isArray(object.sources))
@@ -95069,7 +98914,7 @@
                                 for (var i = 0; i < object.sources.length; ++i) {
                                     if (typeof object.sources[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Exfiltration.sources: object expected");
-                                    message.sources[i] = $root.google.cloud.securitycenter.v2.ExfilResource.fromObject(object.sources[i]);
+                                    message.sources[i] = $root.google.cloud.securitycenter.v2.ExfilResource.fromObject(object.sources[i], long + 1);
                                 }
                             }
                             if (object.targets) {
@@ -95079,7 +98924,7 @@
                                 for (var i = 0; i < object.targets.length; ++i) {
                                     if (typeof object.targets[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Exfiltration.targets: object expected");
-                                    message.targets[i] = $root.google.cloud.securitycenter.v2.ExfilResource.fromObject(object.targets[i]);
+                                    message.targets[i] = $root.google.cloud.securitycenter.v2.ExfilResource.fromObject(object.targets[i], long + 1);
                                 }
                             }
                             if (object.totalExfiltratedBytes != null)
@@ -95186,7 +99031,7 @@
                             this.components = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -95262,9 +99107,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ExfilResource.decode = function decode(reader, length, error) {
+                        ExfilResource.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ExfilResource();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -95282,7 +99131,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -95313,9 +99162,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ExfilResource.verify = function verify(message) {
+                        ExfilResource.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -95337,9 +99190,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ExfilResource} ExfilResource
                          */
-                        ExfilResource.fromObject = function fromObject(object) {
+                        ExfilResource.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ExfilResource)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ExfilResource();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -95440,7 +99297,7 @@
                             this.assignees = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -95606,9 +99463,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ExternalSystem.decode = function decode(reader, length, error) {
+                        ExternalSystem.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ExternalSystem();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -95634,7 +99495,7 @@
                                         break;
                                     }
                                 case 5: {
-                                        message.externalSystemUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.externalSystemUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
@@ -95646,23 +99507,23 @@
                                         break;
                                     }
                                 case 9: {
-                                        message.caseSla = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.caseSla = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.caseCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.caseCreateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 11: {
-                                        message.caseCloseTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.caseCloseTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
-                                        message.ticketInfo = $root.google.cloud.securitycenter.v2.ExternalSystem.TicketInfo.decode(reader, reader.uint32());
+                                        message.ticketInfo = $root.google.cloud.securitycenter.v2.ExternalSystem.TicketInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -95693,9 +99554,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ExternalSystem.verify = function verify(message) {
+                        ExternalSystem.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -95713,7 +99578,7 @@
                                 if (!$util.isString(message.status))
                                     return "status: string expected";
                             if (message.externalSystemUpdateTime != null && message.hasOwnProperty("externalSystemUpdateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.externalSystemUpdateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.externalSystemUpdateTime, long + 1);
                                 if (error)
                                     return "externalSystemUpdateTime." + error;
                             }
@@ -95724,22 +99589,22 @@
                                 if (!$util.isString(message.casePriority))
                                     return "casePriority: string expected";
                             if (message.caseSla != null && message.hasOwnProperty("caseSla")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.caseSla);
+                                var error = $root.google.protobuf.Timestamp.verify(message.caseSla, long + 1);
                                 if (error)
                                     return "caseSla." + error;
                             }
                             if (message.caseCreateTime != null && message.hasOwnProperty("caseCreateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.caseCreateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.caseCreateTime, long + 1);
                                 if (error)
                                     return "caseCreateTime." + error;
                             }
                             if (message.caseCloseTime != null && message.hasOwnProperty("caseCloseTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.caseCloseTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.caseCloseTime, long + 1);
                                 if (error)
                                     return "caseCloseTime." + error;
                             }
                             if (message.ticketInfo != null && message.hasOwnProperty("ticketInfo")) {
-                                var error = $root.google.cloud.securitycenter.v2.ExternalSystem.TicketInfo.verify(message.ticketInfo);
+                                var error = $root.google.cloud.securitycenter.v2.ExternalSystem.TicketInfo.verify(message.ticketInfo, long + 1);
                                 if (error)
                                     return "ticketInfo." + error;
                             }
@@ -95754,9 +99619,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ExternalSystem} ExternalSystem
                          */
-                        ExternalSystem.fromObject = function fromObject(object) {
+                        ExternalSystem.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ExternalSystem)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ExternalSystem();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -95774,7 +99643,7 @@
                             if (object.externalSystemUpdateTime != null) {
                                 if (typeof object.externalSystemUpdateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ExternalSystem.externalSystemUpdateTime: object expected");
-                                message.externalSystemUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.externalSystemUpdateTime);
+                                message.externalSystemUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.externalSystemUpdateTime, long + 1);
                             }
                             if (object.caseUri != null)
                                 message.caseUri = String(object.caseUri);
@@ -95783,22 +99652,22 @@
                             if (object.caseSla != null) {
                                 if (typeof object.caseSla !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ExternalSystem.caseSla: object expected");
-                                message.caseSla = $root.google.protobuf.Timestamp.fromObject(object.caseSla);
+                                message.caseSla = $root.google.protobuf.Timestamp.fromObject(object.caseSla, long + 1);
                             }
                             if (object.caseCreateTime != null) {
                                 if (typeof object.caseCreateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ExternalSystem.caseCreateTime: object expected");
-                                message.caseCreateTime = $root.google.protobuf.Timestamp.fromObject(object.caseCreateTime);
+                                message.caseCreateTime = $root.google.protobuf.Timestamp.fromObject(object.caseCreateTime, long + 1);
                             }
                             if (object.caseCloseTime != null) {
                                 if (typeof object.caseCloseTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ExternalSystem.caseCloseTime: object expected");
-                                message.caseCloseTime = $root.google.protobuf.Timestamp.fromObject(object.caseCloseTime);
+                                message.caseCloseTime = $root.google.protobuf.Timestamp.fromObject(object.caseCloseTime, long + 1);
                             }
                             if (object.ticketInfo != null) {
                                 if (typeof object.ticketInfo !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ExternalSystem.ticketInfo: object expected");
-                                message.ticketInfo = $root.google.cloud.securitycenter.v2.ExternalSystem.TicketInfo.fromObject(object.ticketInfo);
+                                message.ticketInfo = $root.google.cloud.securitycenter.v2.ExternalSystem.TicketInfo.fromObject(object.ticketInfo, long + 1);
                             }
                             return message;
                         };
@@ -95909,7 +99778,7 @@
                             function TicketInfo(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -96024,9 +99893,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            TicketInfo.decode = function decode(reader, length, error) {
+                            TicketInfo.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ExternalSystem.TicketInfo();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -96054,11 +99927,11 @@
                                             break;
                                         }
                                     case 6: {
-                                            message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                            message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -96089,9 +99962,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            TicketInfo.verify = function verify(message) {
+                            TicketInfo.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -96108,7 +99985,7 @@
                                     if (!$util.isString(message.status))
                                         return "status: string expected";
                                 if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                    var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                    var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                     if (error)
                                         return "updateTime." + error;
                                 }
@@ -96123,9 +100000,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.ExternalSystem.TicketInfo} TicketInfo
                              */
-                            TicketInfo.fromObject = function fromObject(object) {
+                            TicketInfo.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.ExternalSystem.TicketInfo)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.ExternalSystem.TicketInfo();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -96140,7 +100021,7 @@
                                 if (object.updateTime != null) {
                                     if (typeof object.updateTime !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ExternalSystem.TicketInfo.updateTime: object expected");
-                                    message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                    message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                                 }
                                 return message;
                             };
@@ -96241,7 +100122,7 @@
                             this.operations = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -96377,9 +100258,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        File.decode = function decode(reader, length, error) {
+                        File.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.File();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -96411,17 +100296,17 @@
                                         break;
                                     }
                                 case 7: {
-                                        message.diskPath = $root.google.cloud.securitycenter.v2.File.DiskPath.decode(reader, reader.uint32());
+                                        message.diskPath = $root.google.cloud.securitycenter.v2.File.DiskPath.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
                                         if (!(message.operations && message.operations.length))
                                             message.operations = [];
-                                        message.operations.push($root.google.cloud.securitycenter.v2.File.FileOperation.decode(reader, reader.uint32()));
+                                        message.operations.push($root.google.cloud.securitycenter.v2.File.FileOperation.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -96452,9 +100337,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        File.verify = function verify(message) {
+                        File.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.path != null && message.hasOwnProperty("path"))
                                 if (!$util.isString(message.path))
                                     return "path: string expected";
@@ -96474,7 +100363,7 @@
                                 if (!$util.isString(message.contents))
                                     return "contents: string expected";
                             if (message.diskPath != null && message.hasOwnProperty("diskPath")) {
-                                var error = $root.google.cloud.securitycenter.v2.File.DiskPath.verify(message.diskPath);
+                                var error = $root.google.cloud.securitycenter.v2.File.DiskPath.verify(message.diskPath, long + 1);
                                 if (error)
                                     return "diskPath." + error;
                             }
@@ -96482,7 +100371,7 @@
                                 if (!Array.isArray(message.operations))
                                     return "operations: array expected";
                                 for (var i = 0; i < message.operations.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.File.FileOperation.verify(message.operations[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.File.FileOperation.verify(message.operations[i], long + 1);
                                     if (error)
                                         return "operations." + error;
                                 }
@@ -96498,9 +100387,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.File} File
                          */
-                        File.fromObject = function fromObject(object) {
+                        File.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.File)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.File();
                             if (object.path != null)
                                 message.path = String(object.path);
@@ -96531,7 +100424,7 @@
                             if (object.diskPath != null) {
                                 if (typeof object.diskPath !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.File.diskPath: object expected");
-                                message.diskPath = $root.google.cloud.securitycenter.v2.File.DiskPath.fromObject(object.diskPath);
+                                message.diskPath = $root.google.cloud.securitycenter.v2.File.DiskPath.fromObject(object.diskPath, long + 1);
                             }
                             if (object.operations) {
                                 if (!Array.isArray(object.operations))
@@ -96540,7 +100433,7 @@
                                 for (var i = 0; i < object.operations.length; ++i) {
                                     if (typeof object.operations[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.File.operations: object expected");
-                                    message.operations[i] = $root.google.cloud.securitycenter.v2.File.FileOperation.fromObject(object.operations[i]);
+                                    message.operations[i] = $root.google.cloud.securitycenter.v2.File.FileOperation.fromObject(object.operations[i], long + 1);
                                 }
                             }
                             return message;
@@ -96653,7 +100546,7 @@
                             function DiskPath(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -96728,9 +100621,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            DiskPath.decode = function decode(reader, length, error) {
+                            DiskPath.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.File.DiskPath();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -96746,7 +100643,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -96777,9 +100674,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            DiskPath.verify = function verify(message) {
+                            DiskPath.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.partitionUuid != null && message.hasOwnProperty("partitionUuid"))
                                     if (!$util.isString(message.partitionUuid))
                                         return "partitionUuid: string expected";
@@ -96797,9 +100698,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.File.DiskPath} DiskPath
                              */
-                            DiskPath.fromObject = function fromObject(object) {
+                            DiskPath.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.File.DiskPath)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.File.DiskPath();
                                 if (object.partitionUuid != null)
                                     message.partitionUuid = String(object.partitionUuid);
@@ -96881,7 +100786,7 @@
                             function FileOperation(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -96946,9 +100851,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            FileOperation.decode = function decode(reader, length, error) {
+                            FileOperation.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.File.FileOperation();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -96960,7 +100869,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -96991,9 +100900,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            FileOperation.verify = function verify(message) {
+                            FileOperation.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.type != null && message.hasOwnProperty("type"))
                                     switch (message.type) {
                                     default:
@@ -97017,9 +100930,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.File.FileOperation} FileOperation
                              */
-                            FileOperation.fromObject = function fromObject(object) {
+                            FileOperation.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.File.FileOperation)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.File.FileOperation();
                                 switch (object.type) {
                                 default:
@@ -97227,7 +101144,7 @@
                             this.dataRetentionDeletionEvents = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -97915,9 +101832,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Finding.decode = function decode(reader, length, error) {
+                        Finding.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Finding(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -97965,26 +101886,28 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.sourceProperties, key);
                                         message.sourceProperties[key] = value;
                                         break;
                                     }
                                 case 10: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v2.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v2.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 11: {
-                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 12: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 14: {
@@ -97996,7 +101919,7 @@
                                         break;
                                     }
                                 case 53: {
-                                        message.muteInfo = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.decode(reader, reader.uint32());
+                                        message.muteInfo = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 16: {
@@ -98004,15 +101927,15 @@
                                         break;
                                     }
                                 case 17: {
-                                        message.indicator = $root.google.cloud.securitycenter.v2.Indicator.decode(reader, reader.uint32());
+                                        message.indicator = $root.google.cloud.securitycenter.v2.Indicator.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 18: {
-                                        message.vulnerability = $root.google.cloud.securitycenter.v2.Vulnerability.decode(reader, reader.uint32());
+                                        message.vulnerability = $root.google.cloud.securitycenter.v2.Vulnerability.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 19: {
-                                        message.muteUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.muteUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 20: {
@@ -98028,28 +101951,30 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.cloud.securitycenter.v2.ExternalSystem.decode(reader, reader.uint32());
+                                                value = $root.google.cloud.securitycenter.v2.ExternalSystem.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.externalSystems, key);
                                         message.externalSystems[key] = value;
                                         break;
                                     }
                                 case 21: {
-                                        message.mitreAttack = $root.google.cloud.securitycenter.v2.MitreAttack.decode(reader, reader.uint32());
+                                        message.mitreAttack = $root.google.cloud.securitycenter.v2.MitreAttack.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 22: {
-                                        message.access = $root.google.cloud.securitycenter.v2.Access.decode(reader, reader.uint32());
+                                        message.access = $root.google.cloud.securitycenter.v2.Access.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 23: {
                                         if (!(message.connections && message.connections.length))
                                             message.connections = [];
-                                        message.connections.push($root.google.cloud.securitycenter.v2.Connection.decode(reader, reader.uint32()));
+                                        message.connections.push($root.google.cloud.securitycenter.v2.Connection.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 24: {
@@ -98059,7 +101984,7 @@
                                 case 25: {
                                         if (!(message.processes && message.processes.length))
                                             message.processes = [];
-                                        message.processes.push($root.google.cloud.securitycenter.v2.Process.decode(reader, reader.uint32()));
+                                        message.processes.push($root.google.cloud.securitycenter.v2.Process.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 26: {
@@ -98075,20 +102000,22 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.cloud.securitycenter.v2.ContactDetails.decode(reader, reader.uint32());
+                                                value = $root.google.cloud.securitycenter.v2.ContactDetails.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.contacts, key);
                                         message.contacts[key] = value;
                                         break;
                                     }
                                 case 27: {
                                         if (!(message.compliances && message.compliances.length))
                                             message.compliances = [];
-                                        message.compliances.push($root.google.cloud.securitycenter.v2.Compliance.decode(reader, reader.uint32()));
+                                        message.compliances.push($root.google.cloud.securitycenter.v2.Compliance.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 29: {
@@ -98100,13 +102027,13 @@
                                         break;
                                     }
                                 case 31: {
-                                        message.exfiltration = $root.google.cloud.securitycenter.v2.Exfiltration.decode(reader, reader.uint32());
+                                        message.exfiltration = $root.google.cloud.securitycenter.v2.Exfiltration.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 32: {
                                         if (!(message.iamBindings && message.iamBindings.length))
                                             message.iamBindings = [];
-                                        message.iamBindings.push($root.google.cloud.securitycenter.v2.IamBinding.decode(reader, reader.uint32()));
+                                        message.iamBindings.push($root.google.cloud.securitycenter.v2.IamBinding.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 33: {
@@ -98120,141 +102047,141 @@
                                 case 35: {
                                         if (!(message.containers && message.containers.length))
                                             message.containers = [];
-                                        message.containers.push($root.google.cloud.securitycenter.v2.Container.decode(reader, reader.uint32()));
+                                        message.containers.push($root.google.cloud.securitycenter.v2.Container.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 36: {
-                                        message.kubernetes = $root.google.cloud.securitycenter.v2.Kubernetes.decode(reader, reader.uint32());
+                                        message.kubernetes = $root.google.cloud.securitycenter.v2.Kubernetes.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 37: {
-                                        message.database = $root.google.cloud.securitycenter.v2.Database.decode(reader, reader.uint32());
+                                        message.database = $root.google.cloud.securitycenter.v2.Database.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 38: {
-                                        message.attackExposure = $root.google.cloud.securitycenter.v2.AttackExposure.decode(reader, reader.uint32());
+                                        message.attackExposure = $root.google.cloud.securitycenter.v2.AttackExposure.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 39: {
                                         if (!(message.files && message.files.length))
                                             message.files = [];
-                                        message.files.push($root.google.cloud.securitycenter.v2.File.decode(reader, reader.uint32()));
+                                        message.files.push($root.google.cloud.securitycenter.v2.File.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 40: {
-                                        message.cloudDlpInspection = $root.google.cloud.securitycenter.v2.CloudDlpInspection.decode(reader, reader.uint32());
+                                        message.cloudDlpInspection = $root.google.cloud.securitycenter.v2.CloudDlpInspection.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 41: {
-                                        message.cloudDlpDataProfile = $root.google.cloud.securitycenter.v2.CloudDlpDataProfile.decode(reader, reader.uint32());
+                                        message.cloudDlpDataProfile = $root.google.cloud.securitycenter.v2.CloudDlpDataProfile.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 42: {
-                                        message.kernelRootkit = $root.google.cloud.securitycenter.v2.KernelRootkit.decode(reader, reader.uint32());
+                                        message.kernelRootkit = $root.google.cloud.securitycenter.v2.KernelRootkit.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 43: {
                                         if (!(message.orgPolicies && message.orgPolicies.length))
                                             message.orgPolicies = [];
-                                        message.orgPolicies.push($root.google.cloud.securitycenter.v2.OrgPolicy.decode(reader, reader.uint32()));
+                                        message.orgPolicies.push($root.google.cloud.securitycenter.v2.OrgPolicy.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 44: {
-                                        message.job = $root.google.cloud.securitycenter.v2.Job.decode(reader, reader.uint32());
+                                        message.job = $root.google.cloud.securitycenter.v2.Job.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 45: {
-                                        message.application = $root.google.cloud.securitycenter.v2.Application.decode(reader, reader.uint32());
+                                        message.application = $root.google.cloud.securitycenter.v2.Application.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 46: {
-                                        message.ipRules = $root.google.cloud.securitycenter.v2.IpRules.decode(reader, reader.uint32());
+                                        message.ipRules = $root.google.cloud.securitycenter.v2.IpRules.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 47: {
-                                        message.backupDisasterRecovery = $root.google.cloud.securitycenter.v2.BackupDisasterRecovery.decode(reader, reader.uint32());
+                                        message.backupDisasterRecovery = $root.google.cloud.securitycenter.v2.BackupDisasterRecovery.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 48: {
-                                        message.securityPosture = $root.google.cloud.securitycenter.v2.SecurityPosture.decode(reader, reader.uint32());
+                                        message.securityPosture = $root.google.cloud.securitycenter.v2.SecurityPosture.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 49: {
                                         if (!(message.logEntries && message.logEntries.length))
                                             message.logEntries = [];
-                                        message.logEntries.push($root.google.cloud.securitycenter.v2.LogEntry.decode(reader, reader.uint32()));
+                                        message.logEntries.push($root.google.cloud.securitycenter.v2.LogEntry.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 50: {
                                         if (!(message.loadBalancers && message.loadBalancers.length))
                                             message.loadBalancers = [];
-                                        message.loadBalancers.push($root.google.cloud.securitycenter.v2.LoadBalancer.decode(reader, reader.uint32()));
+                                        message.loadBalancers.push($root.google.cloud.securitycenter.v2.LoadBalancer.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 51: {
-                                        message.cloudArmor = $root.google.cloud.securitycenter.v2.CloudArmor.decode(reader, reader.uint32());
+                                        message.cloudArmor = $root.google.cloud.securitycenter.v2.CloudArmor.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 55: {
-                                        message.notebook = $root.google.cloud.securitycenter.v2.Notebook.decode(reader, reader.uint32());
+                                        message.notebook = $root.google.cloud.securitycenter.v2.Notebook.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 56: {
-                                        message.toxicCombination = $root.google.cloud.securitycenter.v2.ToxicCombination.decode(reader, reader.uint32());
+                                        message.toxicCombination = $root.google.cloud.securitycenter.v2.ToxicCombination.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 57: {
                                         if (!(message.groupMemberships && message.groupMemberships.length))
                                             message.groupMemberships = [];
-                                        message.groupMemberships.push($root.google.cloud.securitycenter.v2.GroupMembership.decode(reader, reader.uint32()));
+                                        message.groupMemberships.push($root.google.cloud.securitycenter.v2.GroupMembership.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 58: {
-                                        message.disk = $root.google.cloud.securitycenter.v2.Disk.decode(reader, reader.uint32());
+                                        message.disk = $root.google.cloud.securitycenter.v2.Disk.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 61: {
                                         if (!(message.dataAccessEvents && message.dataAccessEvents.length))
                                             message.dataAccessEvents = [];
-                                        message.dataAccessEvents.push($root.google.cloud.securitycenter.v2.DataAccessEvent.decode(reader, reader.uint32()));
+                                        message.dataAccessEvents.push($root.google.cloud.securitycenter.v2.DataAccessEvent.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 62: {
                                         if (!(message.dataFlowEvents && message.dataFlowEvents.length))
                                             message.dataFlowEvents = [];
-                                        message.dataFlowEvents.push($root.google.cloud.securitycenter.v2.DataFlowEvent.decode(reader, reader.uint32()));
+                                        message.dataFlowEvents.push($root.google.cloud.securitycenter.v2.DataFlowEvent.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 63: {
                                         if (!(message.networks && message.networks.length))
                                             message.networks = [];
-                                        message.networks.push($root.google.cloud.securitycenter.v2.Network.decode(reader, reader.uint32()));
+                                        message.networks.push($root.google.cloud.securitycenter.v2.Network.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 64: {
                                         if (!(message.dataRetentionDeletionEvents && message.dataRetentionDeletionEvents.length))
                                             message.dataRetentionDeletionEvents = [];
-                                        message.dataRetentionDeletionEvents.push($root.google.cloud.securitycenter.v2.DataRetentionDeletionEvent.decode(reader, reader.uint32()));
+                                        message.dataRetentionDeletionEvents.push($root.google.cloud.securitycenter.v2.DataRetentionDeletionEvent.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 65: {
-                                        message.affectedResources = $root.google.cloud.securitycenter.v2.AffectedResources.decode(reader, reader.uint32());
+                                        message.affectedResources = $root.google.cloud.securitycenter.v2.AffectedResources.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 66: {
-                                        message.aiModel = $root.google.cloud.securitycenter.v2.AiModel.decode(reader, reader.uint32());
+                                        message.aiModel = $root.google.cloud.securitycenter.v2.AiModel.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 69: {
-                                        message.chokepoint = $root.google.cloud.securitycenter.v2.Chokepoint.decode(reader, reader.uint32());
+                                        message.chokepoint = $root.google.cloud.securitycenter.v2.Chokepoint.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 72: {
-                                        message.vertexAi = $root.google.cloud.securitycenter.v2.VertexAi.decode(reader, reader.uint32());
+                                        message.vertexAi = $root.google.cloud.securitycenter.v2.VertexAi.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -98285,9 +102212,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Finding.verify = function verify(message) {
+                        Finding.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -98320,23 +102251,23 @@
                                     return "sourceProperties: object expected";
                                 var key = Object.keys(message.sourceProperties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]], long + 1);
                                     if (error)
                                         return "sourceProperties." + error;
                                 }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v2.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v2.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.eventTime != null && message.hasOwnProperty("eventTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime, long + 1);
                                 if (error)
                                     return "eventTime." + error;
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
@@ -98362,7 +102293,7 @@
                                     break;
                                 }
                             if (message.muteInfo != null && message.hasOwnProperty("muteInfo")) {
-                                var error = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.verify(message.muteInfo);
+                                var error = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.verify(message.muteInfo, long + 1);
                                 if (error)
                                     return "muteInfo." + error;
                             }
@@ -98383,17 +102314,17 @@
                                     break;
                                 }
                             if (message.indicator != null && message.hasOwnProperty("indicator")) {
-                                var error = $root.google.cloud.securitycenter.v2.Indicator.verify(message.indicator);
+                                var error = $root.google.cloud.securitycenter.v2.Indicator.verify(message.indicator, long + 1);
                                 if (error)
                                     return "indicator." + error;
                             }
                             if (message.vulnerability != null && message.hasOwnProperty("vulnerability")) {
-                                var error = $root.google.cloud.securitycenter.v2.Vulnerability.verify(message.vulnerability);
+                                var error = $root.google.cloud.securitycenter.v2.Vulnerability.verify(message.vulnerability, long + 1);
                                 if (error)
                                     return "vulnerability." + error;
                             }
                             if (message.muteUpdateTime != null && message.hasOwnProperty("muteUpdateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.muteUpdateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.muteUpdateTime, long + 1);
                                 if (error)
                                     return "muteUpdateTime." + error;
                             }
@@ -98402,18 +102333,18 @@
                                     return "externalSystems: object expected";
                                 var key = Object.keys(message.externalSystems);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ExternalSystem.verify(message.externalSystems[key[i]]);
+                                    var error = $root.google.cloud.securitycenter.v2.ExternalSystem.verify(message.externalSystems[key[i]], long + 1);
                                     if (error)
                                         return "externalSystems." + error;
                                 }
                             }
                             if (message.mitreAttack != null && message.hasOwnProperty("mitreAttack")) {
-                                var error = $root.google.cloud.securitycenter.v2.MitreAttack.verify(message.mitreAttack);
+                                var error = $root.google.cloud.securitycenter.v2.MitreAttack.verify(message.mitreAttack, long + 1);
                                 if (error)
                                     return "mitreAttack." + error;
                             }
                             if (message.access != null && message.hasOwnProperty("access")) {
-                                var error = $root.google.cloud.securitycenter.v2.Access.verify(message.access);
+                                var error = $root.google.cloud.securitycenter.v2.Access.verify(message.access, long + 1);
                                 if (error)
                                     return "access." + error;
                             }
@@ -98421,7 +102352,7 @@
                                 if (!Array.isArray(message.connections))
                                     return "connections: array expected";
                                 for (var i = 0; i < message.connections.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Connection.verify(message.connections[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Connection.verify(message.connections[i], long + 1);
                                     if (error)
                                         return "connections." + error;
                                 }
@@ -98433,7 +102364,7 @@
                                 if (!Array.isArray(message.processes))
                                     return "processes: array expected";
                                 for (var i = 0; i < message.processes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Process.verify(message.processes[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Process.verify(message.processes[i], long + 1);
                                     if (error)
                                         return "processes." + error;
                                 }
@@ -98443,7 +102374,7 @@
                                     return "contacts: object expected";
                                 var key = Object.keys(message.contacts);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ContactDetails.verify(message.contacts[key[i]]);
+                                    var error = $root.google.cloud.securitycenter.v2.ContactDetails.verify(message.contacts[key[i]], long + 1);
                                     if (error)
                                         return "contacts." + error;
                                 }
@@ -98452,7 +102383,7 @@
                                 if (!Array.isArray(message.compliances))
                                     return "compliances: array expected";
                                 for (var i = 0; i < message.compliances.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Compliance.verify(message.compliances[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Compliance.verify(message.compliances[i], long + 1);
                                     if (error)
                                         return "compliances." + error;
                                 }
@@ -98464,7 +102395,7 @@
                                 if (!$util.isString(message.description))
                                     return "description: string expected";
                             if (message.exfiltration != null && message.hasOwnProperty("exfiltration")) {
-                                var error = $root.google.cloud.securitycenter.v2.Exfiltration.verify(message.exfiltration);
+                                var error = $root.google.cloud.securitycenter.v2.Exfiltration.verify(message.exfiltration, long + 1);
                                 if (error)
                                     return "exfiltration." + error;
                             }
@@ -98472,7 +102403,7 @@
                                 if (!Array.isArray(message.iamBindings))
                                     return "iamBindings: array expected";
                                 for (var i = 0; i < message.iamBindings.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.IamBinding.verify(message.iamBindings[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.IamBinding.verify(message.iamBindings[i], long + 1);
                                     if (error)
                                         return "iamBindings." + error;
                                 }
@@ -98487,23 +102418,23 @@
                                 if (!Array.isArray(message.containers))
                                     return "containers: array expected";
                                 for (var i = 0; i < message.containers.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Container.verify(message.containers[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Container.verify(message.containers[i], long + 1);
                                     if (error)
                                         return "containers." + error;
                                 }
                             }
                             if (message.kubernetes != null && message.hasOwnProperty("kubernetes")) {
-                                var error = $root.google.cloud.securitycenter.v2.Kubernetes.verify(message.kubernetes);
+                                var error = $root.google.cloud.securitycenter.v2.Kubernetes.verify(message.kubernetes, long + 1);
                                 if (error)
                                     return "kubernetes." + error;
                             }
                             if (message.database != null && message.hasOwnProperty("database")) {
-                                var error = $root.google.cloud.securitycenter.v2.Database.verify(message.database);
+                                var error = $root.google.cloud.securitycenter.v2.Database.verify(message.database, long + 1);
                                 if (error)
                                     return "database." + error;
                             }
                             if (message.attackExposure != null && message.hasOwnProperty("attackExposure")) {
-                                var error = $root.google.cloud.securitycenter.v2.AttackExposure.verify(message.attackExposure);
+                                var error = $root.google.cloud.securitycenter.v2.AttackExposure.verify(message.attackExposure, long + 1);
                                 if (error)
                                     return "attackExposure." + error;
                             }
@@ -98511,23 +102442,23 @@
                                 if (!Array.isArray(message.files))
                                     return "files: array expected";
                                 for (var i = 0; i < message.files.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.File.verify(message.files[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.File.verify(message.files[i], long + 1);
                                     if (error)
                                         return "files." + error;
                                 }
                             }
                             if (message.cloudDlpInspection != null && message.hasOwnProperty("cloudDlpInspection")) {
-                                var error = $root.google.cloud.securitycenter.v2.CloudDlpInspection.verify(message.cloudDlpInspection);
+                                var error = $root.google.cloud.securitycenter.v2.CloudDlpInspection.verify(message.cloudDlpInspection, long + 1);
                                 if (error)
                                     return "cloudDlpInspection." + error;
                             }
                             if (message.cloudDlpDataProfile != null && message.hasOwnProperty("cloudDlpDataProfile")) {
-                                var error = $root.google.cloud.securitycenter.v2.CloudDlpDataProfile.verify(message.cloudDlpDataProfile);
+                                var error = $root.google.cloud.securitycenter.v2.CloudDlpDataProfile.verify(message.cloudDlpDataProfile, long + 1);
                                 if (error)
                                     return "cloudDlpDataProfile." + error;
                             }
                             if (message.kernelRootkit != null && message.hasOwnProperty("kernelRootkit")) {
-                                var error = $root.google.cloud.securitycenter.v2.KernelRootkit.verify(message.kernelRootkit);
+                                var error = $root.google.cloud.securitycenter.v2.KernelRootkit.verify(message.kernelRootkit, long + 1);
                                 if (error)
                                     return "kernelRootkit." + error;
                             }
@@ -98535,33 +102466,33 @@
                                 if (!Array.isArray(message.orgPolicies))
                                     return "orgPolicies: array expected";
                                 for (var i = 0; i < message.orgPolicies.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.OrgPolicy.verify(message.orgPolicies[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.OrgPolicy.verify(message.orgPolicies[i], long + 1);
                                     if (error)
                                         return "orgPolicies." + error;
                                 }
                             }
                             if (message.job != null && message.hasOwnProperty("job")) {
-                                var error = $root.google.cloud.securitycenter.v2.Job.verify(message.job);
+                                var error = $root.google.cloud.securitycenter.v2.Job.verify(message.job, long + 1);
                                 if (error)
                                     return "job." + error;
                             }
                             if (message.application != null && message.hasOwnProperty("application")) {
-                                var error = $root.google.cloud.securitycenter.v2.Application.verify(message.application);
+                                var error = $root.google.cloud.securitycenter.v2.Application.verify(message.application, long + 1);
                                 if (error)
                                     return "application." + error;
                             }
                             if (message.ipRules != null && message.hasOwnProperty("ipRules")) {
-                                var error = $root.google.cloud.securitycenter.v2.IpRules.verify(message.ipRules);
+                                var error = $root.google.cloud.securitycenter.v2.IpRules.verify(message.ipRules, long + 1);
                                 if (error)
                                     return "ipRules." + error;
                             }
                             if (message.backupDisasterRecovery != null && message.hasOwnProperty("backupDisasterRecovery")) {
-                                var error = $root.google.cloud.securitycenter.v2.BackupDisasterRecovery.verify(message.backupDisasterRecovery);
+                                var error = $root.google.cloud.securitycenter.v2.BackupDisasterRecovery.verify(message.backupDisasterRecovery, long + 1);
                                 if (error)
                                     return "backupDisasterRecovery." + error;
                             }
                             if (message.securityPosture != null && message.hasOwnProperty("securityPosture")) {
-                                var error = $root.google.cloud.securitycenter.v2.SecurityPosture.verify(message.securityPosture);
+                                var error = $root.google.cloud.securitycenter.v2.SecurityPosture.verify(message.securityPosture, long + 1);
                                 if (error)
                                     return "securityPosture." + error;
                             }
@@ -98569,7 +102500,7 @@
                                 if (!Array.isArray(message.logEntries))
                                     return "logEntries: array expected";
                                 for (var i = 0; i < message.logEntries.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.LogEntry.verify(message.logEntries[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.LogEntry.verify(message.logEntries[i], long + 1);
                                     if (error)
                                         return "logEntries." + error;
                                 }
@@ -98578,23 +102509,23 @@
                                 if (!Array.isArray(message.loadBalancers))
                                     return "loadBalancers: array expected";
                                 for (var i = 0; i < message.loadBalancers.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.LoadBalancer.verify(message.loadBalancers[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.LoadBalancer.verify(message.loadBalancers[i], long + 1);
                                     if (error)
                                         return "loadBalancers." + error;
                                 }
                             }
                             if (message.cloudArmor != null && message.hasOwnProperty("cloudArmor")) {
-                                var error = $root.google.cloud.securitycenter.v2.CloudArmor.verify(message.cloudArmor);
+                                var error = $root.google.cloud.securitycenter.v2.CloudArmor.verify(message.cloudArmor, long + 1);
                                 if (error)
                                     return "cloudArmor." + error;
                             }
                             if (message.notebook != null && message.hasOwnProperty("notebook")) {
-                                var error = $root.google.cloud.securitycenter.v2.Notebook.verify(message.notebook);
+                                var error = $root.google.cloud.securitycenter.v2.Notebook.verify(message.notebook, long + 1);
                                 if (error)
                                     return "notebook." + error;
                             }
                             if (message.toxicCombination != null && message.hasOwnProperty("toxicCombination")) {
-                                var error = $root.google.cloud.securitycenter.v2.ToxicCombination.verify(message.toxicCombination);
+                                var error = $root.google.cloud.securitycenter.v2.ToxicCombination.verify(message.toxicCombination, long + 1);
                                 if (error)
                                     return "toxicCombination." + error;
                             }
@@ -98602,13 +102533,13 @@
                                 if (!Array.isArray(message.groupMemberships))
                                     return "groupMemberships: array expected";
                                 for (var i = 0; i < message.groupMemberships.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.GroupMembership.verify(message.groupMemberships[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.GroupMembership.verify(message.groupMemberships[i], long + 1);
                                     if (error)
                                         return "groupMemberships." + error;
                                 }
                             }
                             if (message.disk != null && message.hasOwnProperty("disk")) {
-                                var error = $root.google.cloud.securitycenter.v2.Disk.verify(message.disk);
+                                var error = $root.google.cloud.securitycenter.v2.Disk.verify(message.disk, long + 1);
                                 if (error)
                                     return "disk." + error;
                             }
@@ -98616,7 +102547,7 @@
                                 if (!Array.isArray(message.dataAccessEvents))
                                     return "dataAccessEvents: array expected";
                                 for (var i = 0; i < message.dataAccessEvents.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.DataAccessEvent.verify(message.dataAccessEvents[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.DataAccessEvent.verify(message.dataAccessEvents[i], long + 1);
                                     if (error)
                                         return "dataAccessEvents." + error;
                                 }
@@ -98625,7 +102556,7 @@
                                 if (!Array.isArray(message.dataFlowEvents))
                                     return "dataFlowEvents: array expected";
                                 for (var i = 0; i < message.dataFlowEvents.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.DataFlowEvent.verify(message.dataFlowEvents[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.DataFlowEvent.verify(message.dataFlowEvents[i], long + 1);
                                     if (error)
                                         return "dataFlowEvents." + error;
                                 }
@@ -98634,7 +102565,7 @@
                                 if (!Array.isArray(message.networks))
                                     return "networks: array expected";
                                 for (var i = 0; i < message.networks.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Network.verify(message.networks[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Network.verify(message.networks[i], long + 1);
                                     if (error)
                                         return "networks." + error;
                                 }
@@ -98643,28 +102574,28 @@
                                 if (!Array.isArray(message.dataRetentionDeletionEvents))
                                     return "dataRetentionDeletionEvents: array expected";
                                 for (var i = 0; i < message.dataRetentionDeletionEvents.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.DataRetentionDeletionEvent.verify(message.dataRetentionDeletionEvents[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.DataRetentionDeletionEvent.verify(message.dataRetentionDeletionEvents[i], long + 1);
                                     if (error)
                                         return "dataRetentionDeletionEvents." + error;
                                 }
                             }
                             if (message.affectedResources != null && message.hasOwnProperty("affectedResources")) {
-                                var error = $root.google.cloud.securitycenter.v2.AffectedResources.verify(message.affectedResources);
+                                var error = $root.google.cloud.securitycenter.v2.AffectedResources.verify(message.affectedResources, long + 1);
                                 if (error)
                                     return "affectedResources." + error;
                             }
                             if (message.aiModel != null && message.hasOwnProperty("aiModel")) {
-                                var error = $root.google.cloud.securitycenter.v2.AiModel.verify(message.aiModel);
+                                var error = $root.google.cloud.securitycenter.v2.AiModel.verify(message.aiModel, long + 1);
                                 if (error)
                                     return "aiModel." + error;
                             }
                             if (message.chokepoint != null && message.hasOwnProperty("chokepoint")) {
-                                var error = $root.google.cloud.securitycenter.v2.Chokepoint.verify(message.chokepoint);
+                                var error = $root.google.cloud.securitycenter.v2.Chokepoint.verify(message.chokepoint, long + 1);
                                 if (error)
                                     return "chokepoint." + error;
                             }
                             if (message.vertexAi != null && message.hasOwnProperty("vertexAi")) {
-                                var error = $root.google.cloud.securitycenter.v2.VertexAi.verify(message.vertexAi);
+                                var error = $root.google.cloud.securitycenter.v2.VertexAi.verify(message.vertexAi, long + 1);
                                 if (error)
                                     return "vertexAi." + error;
                             }
@@ -98679,9 +102610,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Finding} Finding
                          */
-                        Finding.fromObject = function fromObject(object) {
+                        Finding.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Finding)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Finding();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -98720,25 +102655,27 @@
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.sourceProperties: object expected");
                                 message.sourceProperties = {};
                                 for (var keys = Object.keys(object.sourceProperties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.sourceProperties, keys[i]);
                                     if (typeof object.sourceProperties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.sourceProperties: object expected");
-                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]]);
+                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]], long + 1);
                                 }
                             }
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v2.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v2.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.eventTime != null) {
                                 if (typeof object.eventTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.eventTime: object expected");
-                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime);
+                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime, long + 1);
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             switch (object.severity) {
                             default:
@@ -98795,7 +102732,7 @@
                             if (object.muteInfo != null) {
                                 if (typeof object.muteInfo !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.muteInfo: object expected");
-                                message.muteInfo = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.fromObject(object.muteInfo);
+                                message.muteInfo = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.fromObject(object.muteInfo, long + 1);
                             }
                             switch (object.findingClass) {
                             default:
@@ -98848,37 +102785,39 @@
                             if (object.indicator != null) {
                                 if (typeof object.indicator !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.indicator: object expected");
-                                message.indicator = $root.google.cloud.securitycenter.v2.Indicator.fromObject(object.indicator);
+                                message.indicator = $root.google.cloud.securitycenter.v2.Indicator.fromObject(object.indicator, long + 1);
                             }
                             if (object.vulnerability != null) {
                                 if (typeof object.vulnerability !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.vulnerability: object expected");
-                                message.vulnerability = $root.google.cloud.securitycenter.v2.Vulnerability.fromObject(object.vulnerability);
+                                message.vulnerability = $root.google.cloud.securitycenter.v2.Vulnerability.fromObject(object.vulnerability, long + 1);
                             }
                             if (object.muteUpdateTime != null) {
                                 if (typeof object.muteUpdateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.muteUpdateTime: object expected");
-                                message.muteUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.muteUpdateTime);
+                                message.muteUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.muteUpdateTime, long + 1);
                             }
                             if (object.externalSystems) {
                                 if (typeof object.externalSystems !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.externalSystems: object expected");
                                 message.externalSystems = {};
                                 for (var keys = Object.keys(object.externalSystems), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.externalSystems, keys[i]);
                                     if (typeof object.externalSystems[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.externalSystems: object expected");
-                                    message.externalSystems[keys[i]] = $root.google.cloud.securitycenter.v2.ExternalSystem.fromObject(object.externalSystems[keys[i]]);
+                                    message.externalSystems[keys[i]] = $root.google.cloud.securitycenter.v2.ExternalSystem.fromObject(object.externalSystems[keys[i]], long + 1);
                                 }
                             }
                             if (object.mitreAttack != null) {
                                 if (typeof object.mitreAttack !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.mitreAttack: object expected");
-                                message.mitreAttack = $root.google.cloud.securitycenter.v2.MitreAttack.fromObject(object.mitreAttack);
+                                message.mitreAttack = $root.google.cloud.securitycenter.v2.MitreAttack.fromObject(object.mitreAttack, long + 1);
                             }
                             if (object.access != null) {
                                 if (typeof object.access !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.access: object expected");
-                                message.access = $root.google.cloud.securitycenter.v2.Access.fromObject(object.access);
+                                message.access = $root.google.cloud.securitycenter.v2.Access.fromObject(object.access, long + 1);
                             }
                             if (object.connections) {
                                 if (!Array.isArray(object.connections))
@@ -98887,7 +102826,7 @@
                                 for (var i = 0; i < object.connections.length; ++i) {
                                     if (typeof object.connections[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.connections: object expected");
-                                    message.connections[i] = $root.google.cloud.securitycenter.v2.Connection.fromObject(object.connections[i]);
+                                    message.connections[i] = $root.google.cloud.securitycenter.v2.Connection.fromObject(object.connections[i], long + 1);
                                 }
                             }
                             if (object.muteInitiator != null)
@@ -98899,7 +102838,7 @@
                                 for (var i = 0; i < object.processes.length; ++i) {
                                     if (typeof object.processes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.processes: object expected");
-                                    message.processes[i] = $root.google.cloud.securitycenter.v2.Process.fromObject(object.processes[i]);
+                                    message.processes[i] = $root.google.cloud.securitycenter.v2.Process.fromObject(object.processes[i], long + 1);
                                 }
                             }
                             if (object.contacts) {
@@ -98907,9 +102846,11 @@
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.contacts: object expected");
                                 message.contacts = {};
                                 for (var keys = Object.keys(object.contacts), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.contacts, keys[i]);
                                     if (typeof object.contacts[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.contacts: object expected");
-                                    message.contacts[keys[i]] = $root.google.cloud.securitycenter.v2.ContactDetails.fromObject(object.contacts[keys[i]]);
+                                    message.contacts[keys[i]] = $root.google.cloud.securitycenter.v2.ContactDetails.fromObject(object.contacts[keys[i]], long + 1);
                                 }
                             }
                             if (object.compliances) {
@@ -98919,7 +102860,7 @@
                                 for (var i = 0; i < object.compliances.length; ++i) {
                                     if (typeof object.compliances[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.compliances: object expected");
-                                    message.compliances[i] = $root.google.cloud.securitycenter.v2.Compliance.fromObject(object.compliances[i]);
+                                    message.compliances[i] = $root.google.cloud.securitycenter.v2.Compliance.fromObject(object.compliances[i], long + 1);
                                 }
                             }
                             if (object.parentDisplayName != null)
@@ -98929,7 +102870,7 @@
                             if (object.exfiltration != null) {
                                 if (typeof object.exfiltration !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.exfiltration: object expected");
-                                message.exfiltration = $root.google.cloud.securitycenter.v2.Exfiltration.fromObject(object.exfiltration);
+                                message.exfiltration = $root.google.cloud.securitycenter.v2.Exfiltration.fromObject(object.exfiltration, long + 1);
                             }
                             if (object.iamBindings) {
                                 if (!Array.isArray(object.iamBindings))
@@ -98938,7 +102879,7 @@
                                 for (var i = 0; i < object.iamBindings.length; ++i) {
                                     if (typeof object.iamBindings[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.iamBindings: object expected");
-                                    message.iamBindings[i] = $root.google.cloud.securitycenter.v2.IamBinding.fromObject(object.iamBindings[i]);
+                                    message.iamBindings[i] = $root.google.cloud.securitycenter.v2.IamBinding.fromObject(object.iamBindings[i], long + 1);
                                 }
                             }
                             if (object.nextSteps != null)
@@ -98952,23 +102893,23 @@
                                 for (var i = 0; i < object.containers.length; ++i) {
                                     if (typeof object.containers[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.containers: object expected");
-                                    message.containers[i] = $root.google.cloud.securitycenter.v2.Container.fromObject(object.containers[i]);
+                                    message.containers[i] = $root.google.cloud.securitycenter.v2.Container.fromObject(object.containers[i], long + 1);
                                 }
                             }
                             if (object.kubernetes != null) {
                                 if (typeof object.kubernetes !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.kubernetes: object expected");
-                                message.kubernetes = $root.google.cloud.securitycenter.v2.Kubernetes.fromObject(object.kubernetes);
+                                message.kubernetes = $root.google.cloud.securitycenter.v2.Kubernetes.fromObject(object.kubernetes, long + 1);
                             }
                             if (object.database != null) {
                                 if (typeof object.database !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.database: object expected");
-                                message.database = $root.google.cloud.securitycenter.v2.Database.fromObject(object.database);
+                                message.database = $root.google.cloud.securitycenter.v2.Database.fromObject(object.database, long + 1);
                             }
                             if (object.attackExposure != null) {
                                 if (typeof object.attackExposure !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.attackExposure: object expected");
-                                message.attackExposure = $root.google.cloud.securitycenter.v2.AttackExposure.fromObject(object.attackExposure);
+                                message.attackExposure = $root.google.cloud.securitycenter.v2.AttackExposure.fromObject(object.attackExposure, long + 1);
                             }
                             if (object.files) {
                                 if (!Array.isArray(object.files))
@@ -98977,23 +102918,23 @@
                                 for (var i = 0; i < object.files.length; ++i) {
                                     if (typeof object.files[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.files: object expected");
-                                    message.files[i] = $root.google.cloud.securitycenter.v2.File.fromObject(object.files[i]);
+                                    message.files[i] = $root.google.cloud.securitycenter.v2.File.fromObject(object.files[i], long + 1);
                                 }
                             }
                             if (object.cloudDlpInspection != null) {
                                 if (typeof object.cloudDlpInspection !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.cloudDlpInspection: object expected");
-                                message.cloudDlpInspection = $root.google.cloud.securitycenter.v2.CloudDlpInspection.fromObject(object.cloudDlpInspection);
+                                message.cloudDlpInspection = $root.google.cloud.securitycenter.v2.CloudDlpInspection.fromObject(object.cloudDlpInspection, long + 1);
                             }
                             if (object.cloudDlpDataProfile != null) {
                                 if (typeof object.cloudDlpDataProfile !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.cloudDlpDataProfile: object expected");
-                                message.cloudDlpDataProfile = $root.google.cloud.securitycenter.v2.CloudDlpDataProfile.fromObject(object.cloudDlpDataProfile);
+                                message.cloudDlpDataProfile = $root.google.cloud.securitycenter.v2.CloudDlpDataProfile.fromObject(object.cloudDlpDataProfile, long + 1);
                             }
                             if (object.kernelRootkit != null) {
                                 if (typeof object.kernelRootkit !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.kernelRootkit: object expected");
-                                message.kernelRootkit = $root.google.cloud.securitycenter.v2.KernelRootkit.fromObject(object.kernelRootkit);
+                                message.kernelRootkit = $root.google.cloud.securitycenter.v2.KernelRootkit.fromObject(object.kernelRootkit, long + 1);
                             }
                             if (object.orgPolicies) {
                                 if (!Array.isArray(object.orgPolicies))
@@ -99002,33 +102943,33 @@
                                 for (var i = 0; i < object.orgPolicies.length; ++i) {
                                     if (typeof object.orgPolicies[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.orgPolicies: object expected");
-                                    message.orgPolicies[i] = $root.google.cloud.securitycenter.v2.OrgPolicy.fromObject(object.orgPolicies[i]);
+                                    message.orgPolicies[i] = $root.google.cloud.securitycenter.v2.OrgPolicy.fromObject(object.orgPolicies[i], long + 1);
                                 }
                             }
                             if (object.job != null) {
                                 if (typeof object.job !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.job: object expected");
-                                message.job = $root.google.cloud.securitycenter.v2.Job.fromObject(object.job);
+                                message.job = $root.google.cloud.securitycenter.v2.Job.fromObject(object.job, long + 1);
                             }
                             if (object.application != null) {
                                 if (typeof object.application !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.application: object expected");
-                                message.application = $root.google.cloud.securitycenter.v2.Application.fromObject(object.application);
+                                message.application = $root.google.cloud.securitycenter.v2.Application.fromObject(object.application, long + 1);
                             }
                             if (object.ipRules != null) {
                                 if (typeof object.ipRules !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.ipRules: object expected");
-                                message.ipRules = $root.google.cloud.securitycenter.v2.IpRules.fromObject(object.ipRules);
+                                message.ipRules = $root.google.cloud.securitycenter.v2.IpRules.fromObject(object.ipRules, long + 1);
                             }
                             if (object.backupDisasterRecovery != null) {
                                 if (typeof object.backupDisasterRecovery !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.backupDisasterRecovery: object expected");
-                                message.backupDisasterRecovery = $root.google.cloud.securitycenter.v2.BackupDisasterRecovery.fromObject(object.backupDisasterRecovery);
+                                message.backupDisasterRecovery = $root.google.cloud.securitycenter.v2.BackupDisasterRecovery.fromObject(object.backupDisasterRecovery, long + 1);
                             }
                             if (object.securityPosture != null) {
                                 if (typeof object.securityPosture !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.securityPosture: object expected");
-                                message.securityPosture = $root.google.cloud.securitycenter.v2.SecurityPosture.fromObject(object.securityPosture);
+                                message.securityPosture = $root.google.cloud.securitycenter.v2.SecurityPosture.fromObject(object.securityPosture, long + 1);
                             }
                             if (object.logEntries) {
                                 if (!Array.isArray(object.logEntries))
@@ -99037,7 +102978,7 @@
                                 for (var i = 0; i < object.logEntries.length; ++i) {
                                     if (typeof object.logEntries[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.logEntries: object expected");
-                                    message.logEntries[i] = $root.google.cloud.securitycenter.v2.LogEntry.fromObject(object.logEntries[i]);
+                                    message.logEntries[i] = $root.google.cloud.securitycenter.v2.LogEntry.fromObject(object.logEntries[i], long + 1);
                                 }
                             }
                             if (object.loadBalancers) {
@@ -99047,23 +102988,23 @@
                                 for (var i = 0; i < object.loadBalancers.length; ++i) {
                                     if (typeof object.loadBalancers[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.loadBalancers: object expected");
-                                    message.loadBalancers[i] = $root.google.cloud.securitycenter.v2.LoadBalancer.fromObject(object.loadBalancers[i]);
+                                    message.loadBalancers[i] = $root.google.cloud.securitycenter.v2.LoadBalancer.fromObject(object.loadBalancers[i], long + 1);
                                 }
                             }
                             if (object.cloudArmor != null) {
                                 if (typeof object.cloudArmor !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.cloudArmor: object expected");
-                                message.cloudArmor = $root.google.cloud.securitycenter.v2.CloudArmor.fromObject(object.cloudArmor);
+                                message.cloudArmor = $root.google.cloud.securitycenter.v2.CloudArmor.fromObject(object.cloudArmor, long + 1);
                             }
                             if (object.notebook != null) {
                                 if (typeof object.notebook !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.notebook: object expected");
-                                message.notebook = $root.google.cloud.securitycenter.v2.Notebook.fromObject(object.notebook);
+                                message.notebook = $root.google.cloud.securitycenter.v2.Notebook.fromObject(object.notebook, long + 1);
                             }
                             if (object.toxicCombination != null) {
                                 if (typeof object.toxicCombination !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.toxicCombination: object expected");
-                                message.toxicCombination = $root.google.cloud.securitycenter.v2.ToxicCombination.fromObject(object.toxicCombination);
+                                message.toxicCombination = $root.google.cloud.securitycenter.v2.ToxicCombination.fromObject(object.toxicCombination, long + 1);
                             }
                             if (object.groupMemberships) {
                                 if (!Array.isArray(object.groupMemberships))
@@ -99072,13 +103013,13 @@
                                 for (var i = 0; i < object.groupMemberships.length; ++i) {
                                     if (typeof object.groupMemberships[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.groupMemberships: object expected");
-                                    message.groupMemberships[i] = $root.google.cloud.securitycenter.v2.GroupMembership.fromObject(object.groupMemberships[i]);
+                                    message.groupMemberships[i] = $root.google.cloud.securitycenter.v2.GroupMembership.fromObject(object.groupMemberships[i], long + 1);
                                 }
                             }
                             if (object.disk != null) {
                                 if (typeof object.disk !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.disk: object expected");
-                                message.disk = $root.google.cloud.securitycenter.v2.Disk.fromObject(object.disk);
+                                message.disk = $root.google.cloud.securitycenter.v2.Disk.fromObject(object.disk, long + 1);
                             }
                             if (object.dataAccessEvents) {
                                 if (!Array.isArray(object.dataAccessEvents))
@@ -99087,7 +103028,7 @@
                                 for (var i = 0; i < object.dataAccessEvents.length; ++i) {
                                     if (typeof object.dataAccessEvents[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.dataAccessEvents: object expected");
-                                    message.dataAccessEvents[i] = $root.google.cloud.securitycenter.v2.DataAccessEvent.fromObject(object.dataAccessEvents[i]);
+                                    message.dataAccessEvents[i] = $root.google.cloud.securitycenter.v2.DataAccessEvent.fromObject(object.dataAccessEvents[i], long + 1);
                                 }
                             }
                             if (object.dataFlowEvents) {
@@ -99097,7 +103038,7 @@
                                 for (var i = 0; i < object.dataFlowEvents.length; ++i) {
                                     if (typeof object.dataFlowEvents[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.dataFlowEvents: object expected");
-                                    message.dataFlowEvents[i] = $root.google.cloud.securitycenter.v2.DataFlowEvent.fromObject(object.dataFlowEvents[i]);
+                                    message.dataFlowEvents[i] = $root.google.cloud.securitycenter.v2.DataFlowEvent.fromObject(object.dataFlowEvents[i], long + 1);
                                 }
                             }
                             if (object.networks) {
@@ -99107,7 +103048,7 @@
                                 for (var i = 0; i < object.networks.length; ++i) {
                                     if (typeof object.networks[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.networks: object expected");
-                                    message.networks[i] = $root.google.cloud.securitycenter.v2.Network.fromObject(object.networks[i]);
+                                    message.networks[i] = $root.google.cloud.securitycenter.v2.Network.fromObject(object.networks[i], long + 1);
                                 }
                             }
                             if (object.dataRetentionDeletionEvents) {
@@ -99117,28 +103058,28 @@
                                 for (var i = 0; i < object.dataRetentionDeletionEvents.length; ++i) {
                                     if (typeof object.dataRetentionDeletionEvents[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.dataRetentionDeletionEvents: object expected");
-                                    message.dataRetentionDeletionEvents[i] = $root.google.cloud.securitycenter.v2.DataRetentionDeletionEvent.fromObject(object.dataRetentionDeletionEvents[i]);
+                                    message.dataRetentionDeletionEvents[i] = $root.google.cloud.securitycenter.v2.DataRetentionDeletionEvent.fromObject(object.dataRetentionDeletionEvents[i], long + 1);
                                 }
                             }
                             if (object.affectedResources != null) {
                                 if (typeof object.affectedResources !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.affectedResources: object expected");
-                                message.affectedResources = $root.google.cloud.securitycenter.v2.AffectedResources.fromObject(object.affectedResources);
+                                message.affectedResources = $root.google.cloud.securitycenter.v2.AffectedResources.fromObject(object.affectedResources, long + 1);
                             }
                             if (object.aiModel != null) {
                                 if (typeof object.aiModel !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.aiModel: object expected");
-                                message.aiModel = $root.google.cloud.securitycenter.v2.AiModel.fromObject(object.aiModel);
+                                message.aiModel = $root.google.cloud.securitycenter.v2.AiModel.fromObject(object.aiModel, long + 1);
                             }
                             if (object.chokepoint != null) {
                                 if (typeof object.chokepoint !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.chokepoint: object expected");
-                                message.chokepoint = $root.google.cloud.securitycenter.v2.Chokepoint.fromObject(object.chokepoint);
+                                message.chokepoint = $root.google.cloud.securitycenter.v2.Chokepoint.fromObject(object.chokepoint, long + 1);
                             }
                             if (object.vertexAi != null) {
                                 if (typeof object.vertexAi !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Finding.vertexAi: object expected");
-                                message.vertexAi = $root.google.cloud.securitycenter.v2.VertexAi.fromObject(object.vertexAi);
+                                message.vertexAi = $root.google.cloud.securitycenter.v2.VertexAi.fromObject(object.vertexAi, long + 1);
                             }
                             return message;
                         };
@@ -99240,8 +103181,11 @@
                             var keys2;
                             if (message.sourceProperties && (keys2 = Object.keys(message.sourceProperties)).length) {
                                 object.sourceProperties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.sourceProperties, keys2[j]);
                                     object.sourceProperties[keys2[j]] = $root.google.protobuf.Value.toObject(message.sourceProperties[keys2[j]], options);
+                                }
                             }
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks"))
                                 object.securityMarks = $root.google.cloud.securitycenter.v2.SecurityMarks.toObject(message.securityMarks, options);
@@ -99263,8 +103207,11 @@
                                 object.muteUpdateTime = $root.google.protobuf.Timestamp.toObject(message.muteUpdateTime, options);
                             if (message.externalSystems && (keys2 = Object.keys(message.externalSystems)).length) {
                                 object.externalSystems = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.externalSystems, keys2[j]);
                                     object.externalSystems[keys2[j]] = $root.google.cloud.securitycenter.v2.ExternalSystem.toObject(message.externalSystems[keys2[j]], options);
+                                }
                             }
                             if (message.mitreAttack != null && message.hasOwnProperty("mitreAttack"))
                                 object.mitreAttack = $root.google.cloud.securitycenter.v2.MitreAttack.toObject(message.mitreAttack, options);
@@ -99284,8 +103231,11 @@
                             }
                             if (message.contacts && (keys2 = Object.keys(message.contacts)).length) {
                                 object.contacts = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.contacts, keys2[j]);
                                     object.contacts[keys2[j]] = $root.google.cloud.securitycenter.v2.ContactDetails.toObject(message.contacts[keys2[j]], options);
+                                }
                             }
                             if (message.compliances && message.compliances.length) {
                                 object.compliances = [];
@@ -99502,7 +103452,7 @@
                                 this.dynamicMuteRecords = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -99578,9 +103528,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            MuteInfo.decode = function decode(reader, length, error) {
+                            MuteInfo.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Finding.MuteInfo();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -99588,17 +103542,17 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.staticMute = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute.decode(reader, reader.uint32());
+                                            message.staticMute = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 2: {
                                             if (!(message.dynamicMuteRecords && message.dynamicMuteRecords.length))
                                                 message.dynamicMuteRecords = [];
-                                            message.dynamicMuteRecords.push($root.google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord.decode(reader, reader.uint32()));
+                                            message.dynamicMuteRecords.push($root.google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -99629,11 +103583,15 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            MuteInfo.verify = function verify(message) {
+                            MuteInfo.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.staticMute != null && message.hasOwnProperty("staticMute")) {
-                                    var error = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute.verify(message.staticMute);
+                                    var error = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute.verify(message.staticMute, long + 1);
                                     if (error)
                                         return "staticMute." + error;
                                 }
@@ -99641,7 +103599,7 @@
                                     if (!Array.isArray(message.dynamicMuteRecords))
                                         return "dynamicMuteRecords: array expected";
                                     for (var i = 0; i < message.dynamicMuteRecords.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord.verify(message.dynamicMuteRecords[i]);
+                                        var error = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord.verify(message.dynamicMuteRecords[i], long + 1);
                                         if (error)
                                             return "dynamicMuteRecords." + error;
                                     }
@@ -99657,14 +103615,18 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Finding.MuteInfo} MuteInfo
                              */
-                            MuteInfo.fromObject = function fromObject(object) {
+                            MuteInfo.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Finding.MuteInfo)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Finding.MuteInfo();
                                 if (object.staticMute != null) {
                                     if (typeof object.staticMute !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Finding.MuteInfo.staticMute: object expected");
-                                    message.staticMute = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute.fromObject(object.staticMute);
+                                    message.staticMute = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute.fromObject(object.staticMute, long + 1);
                                 }
                                 if (object.dynamicMuteRecords) {
                                     if (!Array.isArray(object.dynamicMuteRecords))
@@ -99673,7 +103635,7 @@
                                     for (var i = 0; i < object.dynamicMuteRecords.length; ++i) {
                                         if (typeof object.dynamicMuteRecords[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.Finding.MuteInfo.dynamicMuteRecords: object expected");
-                                        message.dynamicMuteRecords[i] = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord.fromObject(object.dynamicMuteRecords[i]);
+                                        message.dynamicMuteRecords[i] = $root.google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord.fromObject(object.dynamicMuteRecords[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -99753,7 +103715,7 @@
                                 function StaticMute(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -99828,9 +103790,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                StaticMute.decode = function decode(reader, length, error) {
+                                StaticMute.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -99842,11 +103808,11 @@
                                                 break;
                                             }
                                         case 2: {
-                                                message.applyTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                                message.applyTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -99877,9 +103843,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                StaticMute.verify = function verify(message) {
+                                StaticMute.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.state != null && message.hasOwnProperty("state"))
                                         switch (message.state) {
                                         default:
@@ -99891,7 +103861,7 @@
                                             break;
                                         }
                                     if (message.applyTime != null && message.hasOwnProperty("applyTime")) {
-                                        var error = $root.google.protobuf.Timestamp.verify(message.applyTime);
+                                        var error = $root.google.protobuf.Timestamp.verify(message.applyTime, long + 1);
                                         if (error)
                                             return "applyTime." + error;
                                     }
@@ -99906,9 +103876,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute} StaticMute
                                  */
-                                StaticMute.fromObject = function fromObject(object) {
+                                StaticMute.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute();
                                     switch (object.state) {
                                     default:
@@ -99937,7 +103911,7 @@
                                     if (object.applyTime != null) {
                                         if (typeof object.applyTime !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.Finding.MuteInfo.StaticMute.applyTime: object expected");
-                                        message.applyTime = $root.google.protobuf.Timestamp.fromObject(object.applyTime);
+                                        message.applyTime = $root.google.protobuf.Timestamp.fromObject(object.applyTime, long + 1);
                                     }
                                     return message;
                                 };
@@ -100016,7 +103990,7 @@
                                 function DynamicMuteRecord(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -100091,9 +104065,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                DynamicMuteRecord.decode = function decode(reader, length, error) {
+                                DynamicMuteRecord.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -100105,11 +104083,11 @@
                                                 break;
                                             }
                                         case 2: {
-                                                message.matchTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                                message.matchTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -100140,14 +104118,18 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                DynamicMuteRecord.verify = function verify(message) {
+                                DynamicMuteRecord.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.muteConfig != null && message.hasOwnProperty("muteConfig"))
                                         if (!$util.isString(message.muteConfig))
                                             return "muteConfig: string expected";
                                     if (message.matchTime != null && message.hasOwnProperty("matchTime")) {
-                                        var error = $root.google.protobuf.Timestamp.verify(message.matchTime);
+                                        var error = $root.google.protobuf.Timestamp.verify(message.matchTime, long + 1);
                                         if (error)
                                             return "matchTime." + error;
                                     }
@@ -100162,16 +104144,20 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord} DynamicMuteRecord
                                  */
-                                DynamicMuteRecord.fromObject = function fromObject(object) {
+                                DynamicMuteRecord.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord();
                                     if (object.muteConfig != null)
                                         message.muteConfig = String(object.muteConfig);
                                     if (object.matchTime != null) {
                                         if (typeof object.matchTime !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.Finding.MuteInfo.DynamicMuteRecord.matchTime: object expected");
-                                        message.matchTime = $root.google.protobuf.Timestamp.fromObject(object.matchTime);
+                                        message.matchTime = $root.google.protobuf.Timestamp.fromObject(object.matchTime, long + 1);
                                     }
                                     return message;
                                 };
@@ -100286,7 +104272,7 @@
                         function GroupMembership(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -100361,9 +104347,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupMembership.decode = function decode(reader, length, error) {
+                        GroupMembership.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GroupMembership();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -100379,7 +104369,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -100410,9 +104400,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupMembership.verify = function verify(message) {
+                        GroupMembership.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.groupType != null && message.hasOwnProperty("groupType"))
                                 switch (message.groupType) {
                                 default:
@@ -100436,9 +104430,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GroupMembership} GroupMembership
                          */
-                        GroupMembership.fromObject = function fromObject(object) {
+                        GroupMembership.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GroupMembership)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GroupMembership();
                             switch (object.groupType) {
                             default:
@@ -100556,7 +104554,7 @@
                         function IamBinding(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -100641,9 +104639,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        IamBinding.decode = function decode(reader, length, error) {
+                        IamBinding.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.IamBinding();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -100663,7 +104665,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -100694,9 +104696,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        IamBinding.verify = function verify(message) {
+                        IamBinding.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.action != null && message.hasOwnProperty("action"))
                                 switch (message.action) {
                                 default:
@@ -100723,9 +104729,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.IamBinding} IamBinding
                          */
-                        IamBinding.fromObject = function fromObject(object) {
+                        IamBinding.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.IamBinding)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.IamBinding();
                             switch (object.action) {
                             default:
@@ -100853,7 +104863,7 @@
                             this.uris = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -100952,9 +104962,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Indicator.decode = function decode(reader, length, error) {
+                        Indicator.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Indicator();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -100976,7 +104990,7 @@
                                 case 3: {
                                         if (!(message.signatures && message.signatures.length))
                                             message.signatures = [];
-                                        message.signatures.push($root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.decode(reader, reader.uint32()));
+                                        message.signatures.push($root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 4: {
@@ -100986,7 +105000,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -101017,9 +105031,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Indicator.verify = function verify(message) {
+                        Indicator.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.ipAddresses != null && message.hasOwnProperty("ipAddresses")) {
                                 if (!Array.isArray(message.ipAddresses))
                                     return "ipAddresses: array expected";
@@ -101038,7 +105056,7 @@
                                 if (!Array.isArray(message.signatures))
                                     return "signatures: array expected";
                                 for (var i = 0; i < message.signatures.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.verify(message.signatures[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.verify(message.signatures[i], long + 1);
                                     if (error)
                                         return "signatures." + error;
                                 }
@@ -101061,9 +105079,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Indicator} Indicator
                          */
-                        Indicator.fromObject = function fromObject(object) {
+                        Indicator.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Indicator)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Indicator();
                             if (object.ipAddresses) {
                                 if (!Array.isArray(object.ipAddresses))
@@ -101086,7 +105108,7 @@
                                 for (var i = 0; i < object.signatures.length; ++i) {
                                     if (typeof object.signatures[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Indicator.signatures: object expected");
-                                    message.signatures[i] = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.fromObject(object.signatures[i]);
+                                    message.signatures[i] = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.fromObject(object.signatures[i], long + 1);
                                 }
                             }
                             if (object.uris) {
@@ -101189,7 +105211,7 @@
                             function ProcessSignature(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -101288,9 +105310,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ProcessSignature.decode = function decode(reader, length, error) {
+                            ProcessSignature.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -101298,11 +105324,11 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 6: {
-                                            message.memoryHashSignature = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.decode(reader, reader.uint32());
+                                            message.memoryHashSignature = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 7: {
-                                            message.yaraRuleSignature = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature.decode(reader, reader.uint32());
+                                            message.yaraRuleSignature = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 8: {
@@ -101310,7 +105336,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -101341,14 +105367,18 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ProcessSignature.verify = function verify(message) {
+                            ProcessSignature.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 var properties = {};
                                 if (message.memoryHashSignature != null && message.hasOwnProperty("memoryHashSignature")) {
                                     properties.signature = 1;
                                     {
-                                        var error = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.verify(message.memoryHashSignature);
+                                        var error = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.verify(message.memoryHashSignature, long + 1);
                                         if (error)
                                             return "memoryHashSignature." + error;
                                     }
@@ -101358,7 +105388,7 @@
                                         return "signature: multiple values";
                                     properties.signature = 1;
                                     {
-                                        var error = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature.verify(message.yaraRuleSignature);
+                                        var error = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature.verify(message.yaraRuleSignature, long + 1);
                                         if (error)
                                             return "yaraRuleSignature." + error;
                                     }
@@ -101383,19 +105413,23 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Indicator.ProcessSignature} ProcessSignature
                              */
-                            ProcessSignature.fromObject = function fromObject(object) {
+                            ProcessSignature.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature();
                                 if (object.memoryHashSignature != null) {
                                     if (typeof object.memoryHashSignature !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Indicator.ProcessSignature.memoryHashSignature: object expected");
-                                    message.memoryHashSignature = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.fromObject(object.memoryHashSignature);
+                                    message.memoryHashSignature = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.fromObject(object.memoryHashSignature, long + 1);
                                 }
                                 if (object.yaraRuleSignature != null) {
                                     if (typeof object.yaraRuleSignature !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Indicator.ProcessSignature.yaraRuleSignature: object expected");
-                                    message.yaraRuleSignature = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature.fromObject(object.yaraRuleSignature);
+                                    message.yaraRuleSignature = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature.fromObject(object.yaraRuleSignature, long + 1);
                                 }
                                 switch (object.signatureType) {
                                 default:
@@ -101498,7 +105532,7 @@
                                     this.detections = [];
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -101574,9 +105608,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                MemoryHashSignature.decode = function decode(reader, length, error) {
+                                MemoryHashSignature.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -101590,11 +105628,11 @@
                                         case 4: {
                                                 if (!(message.detections && message.detections.length))
                                                     message.detections = [];
-                                                message.detections.push($root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection.decode(reader, reader.uint32()));
+                                                message.detections.push($root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection.decode(reader, reader.uint32(), undefined, long + 1));
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -101625,9 +105663,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                MemoryHashSignature.verify = function verify(message) {
+                                MemoryHashSignature.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.binaryFamily != null && message.hasOwnProperty("binaryFamily"))
                                         if (!$util.isString(message.binaryFamily))
                                             return "binaryFamily: string expected";
@@ -101635,7 +105677,7 @@
                                         if (!Array.isArray(message.detections))
                                             return "detections: array expected";
                                         for (var i = 0; i < message.detections.length; ++i) {
-                                            var error = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection.verify(message.detections[i]);
+                                            var error = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection.verify(message.detections[i], long + 1);
                                             if (error)
                                                 return "detections." + error;
                                         }
@@ -101651,9 +105693,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature} MemoryHashSignature
                                  */
-                                MemoryHashSignature.fromObject = function fromObject(object) {
+                                MemoryHashSignature.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature();
                                     if (object.binaryFamily != null)
                                         message.binaryFamily = String(object.binaryFamily);
@@ -101664,7 +105710,7 @@
                                         for (var i = 0; i < object.detections.length; ++i) {
                                             if (typeof object.detections[i] !== "object")
                                                 throw TypeError(".google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.detections: object expected");
-                                            message.detections[i] = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection.fromObject(object.detections[i]);
+                                            message.detections[i] = $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection.fromObject(object.detections[i], long + 1);
                                         }
                                     }
                                     return message;
@@ -101744,7 +105790,7 @@
                                     function Detection(properties) {
                                         if (properties)
                                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                                if (properties[keys[i]] != null)
+                                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                     this[keys[i]] = properties[keys[i]];
                                     }
     
@@ -101819,9 +105865,13 @@
                                      * @throws {Error} If the payload is not a reader or valid buffer
                                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                      */
-                                    Detection.decode = function decode(reader, length, error) {
+                                    Detection.decode = function decode(reader, length, error, long) {
                                         if (!(reader instanceof $Reader))
                                             reader = $Reader.create(reader);
+                                        if (long === undefined)
+                                            long = 0;
+                                        if (long > $Reader.recursionLimit)
+                                            throw Error("maximum nesting depth exceeded");
                                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection();
                                         while (reader.pos < end) {
                                             var tag = reader.uint32();
@@ -101837,7 +105887,7 @@
                                                     break;
                                                 }
                                             default:
-                                                reader.skipType(tag & 7);
+                                                reader.skipType(tag & 7, long);
                                                 break;
                                             }
                                         }
@@ -101868,9 +105918,13 @@
                                      * @param {Object.<string,*>} message Plain object to verify
                                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                      */
-                                    Detection.verify = function verify(message) {
+                                    Detection.verify = function verify(message, long) {
                                         if (typeof message !== "object" || message === null)
                                             return "object expected";
+                                        if (long === undefined)
+                                            long = 0;
+                                        if (long > $util.recursionLimit)
+                                            return "maximum nesting depth exceeded";
                                         if (message.binary != null && message.hasOwnProperty("binary"))
                                             if (!$util.isString(message.binary))
                                                 return "binary: string expected";
@@ -101888,9 +105942,13 @@
                                      * @param {Object.<string,*>} object Plain object
                                      * @returns {google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection} Detection
                                      */
-                                    Detection.fromObject = function fromObject(object) {
+                                    Detection.fromObject = function fromObject(object, long) {
                                         if (object instanceof $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection)
                                             return object;
+                                        if (long === undefined)
+                                            long = 0;
+                                        if (long > $util.recursionLimit)
+                                            throw Error("maximum nesting depth exceeded");
                                         var message = new $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.MemoryHashSignature.Detection();
                                         if (object.binary != null)
                                             message.binary = String(object.binary);
@@ -101975,7 +106033,7 @@
                                 function YaraRuleSignature(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -102040,9 +106098,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                YaraRuleSignature.decode = function decode(reader, length, error) {
+                                YaraRuleSignature.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -102054,7 +106116,7 @@
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -102085,9 +106147,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                YaraRuleSignature.verify = function verify(message) {
+                                YaraRuleSignature.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.yaraRule != null && message.hasOwnProperty("yaraRule"))
                                         if (!$util.isString(message.yaraRule))
                                             return "yaraRule: string expected";
@@ -102102,9 +106168,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature} YaraRuleSignature
                                  */
-                                YaraRuleSignature.fromObject = function fromObject(object) {
+                                YaraRuleSignature.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v2.Indicator.ProcessSignature.YaraRuleSignature();
                                     if (object.yaraRule != null)
                                         message.yaraRule = String(object.yaraRule);
@@ -102210,7 +106280,7 @@
                             this.exposedServices = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -102342,9 +106412,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        IpRules.decode = function decode(reader, length, error) {
+                        IpRules.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.IpRules();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -102356,11 +106430,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.allowed = $root.google.cloud.securitycenter.v2.Allowed.decode(reader, reader.uint32());
+                                        message.allowed = $root.google.cloud.securitycenter.v2.Allowed.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.denied = $root.google.cloud.securitycenter.v2.Denied.decode(reader, reader.uint32());
+                                        message.denied = $root.google.cloud.securitycenter.v2.Denied.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
@@ -102382,7 +106456,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -102413,9 +106487,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        IpRules.verify = function verify(message) {
+                        IpRules.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.direction != null && message.hasOwnProperty("direction"))
                                 switch (message.direction) {
@@ -102429,7 +106507,7 @@
                             if (message.allowed != null && message.hasOwnProperty("allowed")) {
                                 properties.rules = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v2.Allowed.verify(message.allowed);
+                                    var error = $root.google.cloud.securitycenter.v2.Allowed.verify(message.allowed, long + 1);
                                     if (error)
                                         return "allowed." + error;
                                 }
@@ -102439,7 +106517,7 @@
                                     return "rules: multiple values";
                                 properties.rules = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v2.Denied.verify(message.denied);
+                                    var error = $root.google.cloud.securitycenter.v2.Denied.verify(message.denied, long + 1);
                                     if (error)
                                         return "denied." + error;
                                 }
@@ -102476,9 +106554,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.IpRules} IpRules
                          */
-                        IpRules.fromObject = function fromObject(object) {
+                        IpRules.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.IpRules)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.IpRules();
                             switch (object.direction) {
                             default:
@@ -102503,12 +106585,12 @@
                             if (object.allowed != null) {
                                 if (typeof object.allowed !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.IpRules.allowed: object expected");
-                                message.allowed = $root.google.cloud.securitycenter.v2.Allowed.fromObject(object.allowed);
+                                message.allowed = $root.google.cloud.securitycenter.v2.Allowed.fromObject(object.allowed, long + 1);
                             }
                             if (object.denied != null) {
                                 if (typeof object.denied !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.IpRules.denied: object expected");
-                                message.denied = $root.google.cloud.securitycenter.v2.Denied.fromObject(object.denied);
+                                message.denied = $root.google.cloud.securitycenter.v2.Denied.fromObject(object.denied, long + 1);
                             }
                             if (object.sourceIpRanges) {
                                 if (!Array.isArray(object.sourceIpRanges))
@@ -102651,7 +106733,7 @@
                             this.portRanges = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -102727,9 +106809,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        IpRule.decode = function decode(reader, length, error) {
+                        IpRule.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.IpRule();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -102743,11 +106829,11 @@
                                 case 2: {
                                         if (!(message.portRanges && message.portRanges.length))
                                             message.portRanges = [];
-                                        message.portRanges.push($root.google.cloud.securitycenter.v2.IpRule.PortRange.decode(reader, reader.uint32()));
+                                        message.portRanges.push($root.google.cloud.securitycenter.v2.IpRule.PortRange.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -102778,9 +106864,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        IpRule.verify = function verify(message) {
+                        IpRule.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.protocol != null && message.hasOwnProperty("protocol"))
                                 if (!$util.isString(message.protocol))
                                     return "protocol: string expected";
@@ -102788,7 +106878,7 @@
                                 if (!Array.isArray(message.portRanges))
                                     return "portRanges: array expected";
                                 for (var i = 0; i < message.portRanges.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.IpRule.PortRange.verify(message.portRanges[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.IpRule.PortRange.verify(message.portRanges[i], long + 1);
                                     if (error)
                                         return "portRanges." + error;
                                 }
@@ -102804,9 +106894,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.IpRule} IpRule
                          */
-                        IpRule.fromObject = function fromObject(object) {
+                        IpRule.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.IpRule)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.IpRule();
                             if (object.protocol != null)
                                 message.protocol = String(object.protocol);
@@ -102817,7 +106911,7 @@
                                 for (var i = 0; i < object.portRanges.length; ++i) {
                                     if (typeof object.portRanges[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.IpRule.portRanges: object expected");
-                                    message.portRanges[i] = $root.google.cloud.securitycenter.v2.IpRule.PortRange.fromObject(object.portRanges[i]);
+                                    message.portRanges[i] = $root.google.cloud.securitycenter.v2.IpRule.PortRange.fromObject(object.portRanges[i], long + 1);
                                 }
                             }
                             return message;
@@ -102897,7 +106991,7 @@
                             function PortRange(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -102972,9 +107066,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            PortRange.decode = function decode(reader, length, error) {
+                            PortRange.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.IpRule.PortRange();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -102990,7 +107088,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -103021,9 +107119,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            PortRange.verify = function verify(message) {
+                            PortRange.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.min != null && message.hasOwnProperty("min"))
                                     if (!$util.isInteger(message.min) && !(message.min && $util.isInteger(message.min.low) && $util.isInteger(message.min.high)))
                                         return "min: integer|Long expected";
@@ -103041,9 +107143,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.IpRule.PortRange} PortRange
                              */
-                            PortRange.fromObject = function fromObject(object) {
+                            PortRange.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.IpRule.PortRange)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.IpRule.PortRange();
                                 if (object.min != null)
                                     if ($util.Long)
@@ -103157,7 +107263,7 @@
                             this.ipRules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -103223,9 +107329,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Allowed.decode = function decode(reader, length, error) {
+                        Allowed.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Allowed();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -103235,11 +107345,11 @@
                                 case 1: {
                                         if (!(message.ipRules && message.ipRules.length))
                                             message.ipRules = [];
-                                        message.ipRules.push($root.google.cloud.securitycenter.v2.IpRule.decode(reader, reader.uint32()));
+                                        message.ipRules.push($root.google.cloud.securitycenter.v2.IpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -103270,14 +107380,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Allowed.verify = function verify(message) {
+                        Allowed.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.ipRules != null && message.hasOwnProperty("ipRules")) {
                                 if (!Array.isArray(message.ipRules))
                                     return "ipRules: array expected";
                                 for (var i = 0; i < message.ipRules.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.IpRule.verify(message.ipRules[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.IpRule.verify(message.ipRules[i], long + 1);
                                     if (error)
                                         return "ipRules." + error;
                                 }
@@ -103293,9 +107407,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Allowed} Allowed
                          */
-                        Allowed.fromObject = function fromObject(object) {
+                        Allowed.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Allowed)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Allowed();
                             if (object.ipRules) {
                                 if (!Array.isArray(object.ipRules))
@@ -103304,7 +107422,7 @@
                                 for (var i = 0; i < object.ipRules.length; ++i) {
                                     if (typeof object.ipRules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Allowed.ipRules: object expected");
-                                    message.ipRules[i] = $root.google.cloud.securitycenter.v2.IpRule.fromObject(object.ipRules[i]);
+                                    message.ipRules[i] = $root.google.cloud.securitycenter.v2.IpRule.fromObject(object.ipRules[i], long + 1);
                                 }
                             }
                             return message;
@@ -103383,7 +107501,7 @@
                             this.ipRules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -103449,9 +107567,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Denied.decode = function decode(reader, length, error) {
+                        Denied.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Denied();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -103461,11 +107583,11 @@
                                 case 1: {
                                         if (!(message.ipRules && message.ipRules.length))
                                             message.ipRules = [];
-                                        message.ipRules.push($root.google.cloud.securitycenter.v2.IpRule.decode(reader, reader.uint32()));
+                                        message.ipRules.push($root.google.cloud.securitycenter.v2.IpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -103496,14 +107618,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Denied.verify = function verify(message) {
+                        Denied.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.ipRules != null && message.hasOwnProperty("ipRules")) {
                                 if (!Array.isArray(message.ipRules))
                                     return "ipRules: array expected";
                                 for (var i = 0; i < message.ipRules.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.IpRule.verify(message.ipRules[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.IpRule.verify(message.ipRules[i], long + 1);
                                     if (error)
                                         return "ipRules." + error;
                                 }
@@ -103519,9 +107645,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Denied} Denied
                          */
-                        Denied.fromObject = function fromObject(object) {
+                        Denied.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Denied)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Denied();
                             if (object.ipRules) {
                                 if (!Array.isArray(object.ipRules))
@@ -103530,7 +107660,7 @@
                                 for (var i = 0; i < object.ipRules.length; ++i) {
                                     if (typeof object.ipRules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Denied.ipRules: object expected");
-                                    message.ipRules[i] = $root.google.cloud.securitycenter.v2.IpRule.fromObject(object.ipRules[i]);
+                                    message.ipRules[i] = $root.google.cloud.securitycenter.v2.IpRule.fromObject(object.ipRules[i], long + 1);
                                 }
                             }
                             return message;
@@ -103611,7 +107741,7 @@
                         function Job(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -103706,9 +107836,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Job.decode = function decode(reader, length, error) {
+                        Job.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Job();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -103732,7 +107866,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -103763,9 +107897,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Job.verify = function verify(message) {
+                        Job.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -103797,9 +107935,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Job} Job
                          */
-                        Job.fromObject = function fromObject(object) {
+                        Job.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Job)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Job();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -103945,7 +108087,7 @@
                         function KernelRootkit(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -104090,9 +108232,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        KernelRootkit.decode = function decode(reader, length, error) {
+                        KernelRootkit.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.KernelRootkit();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -104136,7 +108282,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -104167,9 +108313,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        KernelRootkit.verify = function verify(message) {
+                        KernelRootkit.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -104208,9 +108358,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.KernelRootkit} KernelRootkit
                          */
-                        KernelRootkit.fromObject = function fromObject(object) {
+                        KernelRootkit.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.KernelRootkit)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.KernelRootkit();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -104340,7 +108494,7 @@
                             this.objects = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -104472,9 +108626,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Kubernetes.decode = function decode(reader, length, error) {
+                        Kubernetes.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Kubernetes();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -104484,47 +108642,47 @@
                                 case 1: {
                                         if (!(message.pods && message.pods.length))
                                             message.pods = [];
-                                        message.pods.push($root.google.cloud.securitycenter.v2.Kubernetes.Pod.decode(reader, reader.uint32()));
+                                        message.pods.push($root.google.cloud.securitycenter.v2.Kubernetes.Pod.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
                                         if (!(message.nodes && message.nodes.length))
                                             message.nodes = [];
-                                        message.nodes.push($root.google.cloud.securitycenter.v2.Kubernetes.Node.decode(reader, reader.uint32()));
+                                        message.nodes.push($root.google.cloud.securitycenter.v2.Kubernetes.Node.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.nodePools && message.nodePools.length))
                                             message.nodePools = [];
-                                        message.nodePools.push($root.google.cloud.securitycenter.v2.Kubernetes.NodePool.decode(reader, reader.uint32()));
+                                        message.nodePools.push($root.google.cloud.securitycenter.v2.Kubernetes.NodePool.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 4: {
                                         if (!(message.roles && message.roles.length))
                                             message.roles = [];
-                                        message.roles.push($root.google.cloud.securitycenter.v2.Kubernetes.Role.decode(reader, reader.uint32()));
+                                        message.roles.push($root.google.cloud.securitycenter.v2.Kubernetes.Role.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 5: {
                                         if (!(message.bindings && message.bindings.length))
                                             message.bindings = [];
-                                        message.bindings.push($root.google.cloud.securitycenter.v2.Kubernetes.Binding.decode(reader, reader.uint32()));
+                                        message.bindings.push($root.google.cloud.securitycenter.v2.Kubernetes.Binding.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 6: {
                                         if (!(message.accessReviews && message.accessReviews.length))
                                             message.accessReviews = [];
-                                        message.accessReviews.push($root.google.cloud.securitycenter.v2.Kubernetes.AccessReview.decode(reader, reader.uint32()));
+                                        message.accessReviews.push($root.google.cloud.securitycenter.v2.Kubernetes.AccessReview.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 7: {
                                         if (!(message.objects && message.objects.length))
                                             message.objects = [];
-                                        message.objects.push($root.google.cloud.securitycenter.v2.Kubernetes.Object.decode(reader, reader.uint32()));
+                                        message.objects.push($root.google.cloud.securitycenter.v2.Kubernetes.Object.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -104555,14 +108713,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Kubernetes.verify = function verify(message) {
+                        Kubernetes.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.pods != null && message.hasOwnProperty("pods")) {
                                 if (!Array.isArray(message.pods))
                                     return "pods: array expected";
                                 for (var i = 0; i < message.pods.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Pod.verify(message.pods[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Pod.verify(message.pods[i], long + 1);
                                     if (error)
                                         return "pods." + error;
                                 }
@@ -104571,7 +108733,7 @@
                                 if (!Array.isArray(message.nodes))
                                     return "nodes: array expected";
                                 for (var i = 0; i < message.nodes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Node.verify(message.nodes[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Node.verify(message.nodes[i], long + 1);
                                     if (error)
                                         return "nodes." + error;
                                 }
@@ -104580,7 +108742,7 @@
                                 if (!Array.isArray(message.nodePools))
                                     return "nodePools: array expected";
                                 for (var i = 0; i < message.nodePools.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.NodePool.verify(message.nodePools[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.NodePool.verify(message.nodePools[i], long + 1);
                                     if (error)
                                         return "nodePools." + error;
                                 }
@@ -104589,7 +108751,7 @@
                                 if (!Array.isArray(message.roles))
                                     return "roles: array expected";
                                 for (var i = 0; i < message.roles.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Role.verify(message.roles[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Role.verify(message.roles[i], long + 1);
                                     if (error)
                                         return "roles." + error;
                                 }
@@ -104598,7 +108760,7 @@
                                 if (!Array.isArray(message.bindings))
                                     return "bindings: array expected";
                                 for (var i = 0; i < message.bindings.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Binding.verify(message.bindings[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Binding.verify(message.bindings[i], long + 1);
                                     if (error)
                                         return "bindings." + error;
                                 }
@@ -104607,7 +108769,7 @@
                                 if (!Array.isArray(message.accessReviews))
                                     return "accessReviews: array expected";
                                 for (var i = 0; i < message.accessReviews.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.AccessReview.verify(message.accessReviews[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.AccessReview.verify(message.accessReviews[i], long + 1);
                                     if (error)
                                         return "accessReviews." + error;
                                 }
@@ -104616,7 +108778,7 @@
                                 if (!Array.isArray(message.objects))
                                     return "objects: array expected";
                                 for (var i = 0; i < message.objects.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Object.verify(message.objects[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Object.verify(message.objects[i], long + 1);
                                     if (error)
                                         return "objects." + error;
                                 }
@@ -104632,9 +108794,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Kubernetes} Kubernetes
                          */
-                        Kubernetes.fromObject = function fromObject(object) {
+                        Kubernetes.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Kubernetes)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Kubernetes();
                             if (object.pods) {
                                 if (!Array.isArray(object.pods))
@@ -104643,7 +108809,7 @@
                                 for (var i = 0; i < object.pods.length; ++i) {
                                     if (typeof object.pods[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.pods: object expected");
-                                    message.pods[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Pod.fromObject(object.pods[i]);
+                                    message.pods[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Pod.fromObject(object.pods[i], long + 1);
                                 }
                             }
                             if (object.nodes) {
@@ -104653,7 +108819,7 @@
                                 for (var i = 0; i < object.nodes.length; ++i) {
                                     if (typeof object.nodes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.nodes: object expected");
-                                    message.nodes[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Node.fromObject(object.nodes[i]);
+                                    message.nodes[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Node.fromObject(object.nodes[i], long + 1);
                                 }
                             }
                             if (object.nodePools) {
@@ -104663,7 +108829,7 @@
                                 for (var i = 0; i < object.nodePools.length; ++i) {
                                     if (typeof object.nodePools[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.nodePools: object expected");
-                                    message.nodePools[i] = $root.google.cloud.securitycenter.v2.Kubernetes.NodePool.fromObject(object.nodePools[i]);
+                                    message.nodePools[i] = $root.google.cloud.securitycenter.v2.Kubernetes.NodePool.fromObject(object.nodePools[i], long + 1);
                                 }
                             }
                             if (object.roles) {
@@ -104673,7 +108839,7 @@
                                 for (var i = 0; i < object.roles.length; ++i) {
                                     if (typeof object.roles[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.roles: object expected");
-                                    message.roles[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Role.fromObject(object.roles[i]);
+                                    message.roles[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Role.fromObject(object.roles[i], long + 1);
                                 }
                             }
                             if (object.bindings) {
@@ -104683,7 +108849,7 @@
                                 for (var i = 0; i < object.bindings.length; ++i) {
                                     if (typeof object.bindings[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.bindings: object expected");
-                                    message.bindings[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Binding.fromObject(object.bindings[i]);
+                                    message.bindings[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Binding.fromObject(object.bindings[i], long + 1);
                                 }
                             }
                             if (object.accessReviews) {
@@ -104693,7 +108859,7 @@
                                 for (var i = 0; i < object.accessReviews.length; ++i) {
                                     if (typeof object.accessReviews[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.accessReviews: object expected");
-                                    message.accessReviews[i] = $root.google.cloud.securitycenter.v2.Kubernetes.AccessReview.fromObject(object.accessReviews[i]);
+                                    message.accessReviews[i] = $root.google.cloud.securitycenter.v2.Kubernetes.AccessReview.fromObject(object.accessReviews[i], long + 1);
                                 }
                             }
                             if (object.objects) {
@@ -104703,7 +108869,7 @@
                                 for (var i = 0; i < object.objects.length; ++i) {
                                     if (typeof object.objects[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.objects: object expected");
-                                    message.objects[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Object.fromObject(object.objects[i]);
+                                    message.objects[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Object.fromObject(object.objects[i], long + 1);
                                 }
                             }
                             return message;
@@ -104820,7 +108986,7 @@
                                 this.containers = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -104917,9 +109083,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Pod.decode = function decode(reader, length, error) {
+                            Pod.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Kubernetes.Pod();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -104937,17 +109107,17 @@
                                     case 3: {
                                             if (!(message.labels && message.labels.length))
                                                 message.labels = [];
-                                            message.labels.push($root.google.cloud.securitycenter.v2.Label.decode(reader, reader.uint32()));
+                                            message.labels.push($root.google.cloud.securitycenter.v2.Label.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     case 4: {
                                             if (!(message.containers && message.containers.length))
                                                 message.containers = [];
-                                            message.containers.push($root.google.cloud.securitycenter.v2.Container.decode(reader, reader.uint32()));
+                                            message.containers.push($root.google.cloud.securitycenter.v2.Container.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -104978,9 +109148,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Pod.verify = function verify(message) {
+                            Pod.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.ns != null && message.hasOwnProperty("ns"))
                                     if (!$util.isString(message.ns))
                                         return "ns: string expected";
@@ -104991,7 +109165,7 @@
                                     if (!Array.isArray(message.labels))
                                         return "labels: array expected";
                                     for (var i = 0; i < message.labels.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v2.Label.verify(message.labels[i]);
+                                        var error = $root.google.cloud.securitycenter.v2.Label.verify(message.labels[i], long + 1);
                                         if (error)
                                             return "labels." + error;
                                     }
@@ -105000,7 +109174,7 @@
                                     if (!Array.isArray(message.containers))
                                         return "containers: array expected";
                                     for (var i = 0; i < message.containers.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v2.Container.verify(message.containers[i]);
+                                        var error = $root.google.cloud.securitycenter.v2.Container.verify(message.containers[i], long + 1);
                                         if (error)
                                             return "containers." + error;
                                     }
@@ -105016,9 +109190,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Kubernetes.Pod} Pod
                              */
-                            Pod.fromObject = function fromObject(object) {
+                            Pod.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Kubernetes.Pod)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Kubernetes.Pod();
                                 if (object.ns != null)
                                     message.ns = String(object.ns);
@@ -105031,7 +109209,7 @@
                                     for (var i = 0; i < object.labels.length; ++i) {
                                         if (typeof object.labels[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.Pod.labels: object expected");
-                                        message.labels[i] = $root.google.cloud.securitycenter.v2.Label.fromObject(object.labels[i]);
+                                        message.labels[i] = $root.google.cloud.securitycenter.v2.Label.fromObject(object.labels[i], long + 1);
                                     }
                                 }
                                 if (object.containers) {
@@ -105041,7 +109219,7 @@
                                     for (var i = 0; i < object.containers.length; ++i) {
                                         if (typeof object.containers[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.Pod.containers: object expected");
-                                        message.containers[i] = $root.google.cloud.securitycenter.v2.Container.fromObject(object.containers[i]);
+                                        message.containers[i] = $root.google.cloud.securitycenter.v2.Container.fromObject(object.containers[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -105134,7 +109312,7 @@
                             function Node(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -105199,9 +109377,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Node.decode = function decode(reader, length, error) {
+                            Node.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Kubernetes.Node();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -105213,7 +109395,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -105244,9 +109426,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Node.verify = function verify(message) {
+                            Node.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.name != null && message.hasOwnProperty("name"))
                                     if (!$util.isString(message.name))
                                         return "name: string expected";
@@ -105261,9 +109447,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Kubernetes.Node} Node
                              */
-                            Node.fromObject = function fromObject(object) {
+                            Node.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Kubernetes.Node)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Kubernetes.Node();
                                 if (object.name != null)
                                     message.name = String(object.name);
@@ -105341,7 +109531,7 @@
                                 this.nodes = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -105417,9 +109607,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            NodePool.decode = function decode(reader, length, error) {
+                            NodePool.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Kubernetes.NodePool();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -105433,11 +109627,11 @@
                                     case 2: {
                                             if (!(message.nodes && message.nodes.length))
                                                 message.nodes = [];
-                                            message.nodes.push($root.google.cloud.securitycenter.v2.Kubernetes.Node.decode(reader, reader.uint32()));
+                                            message.nodes.push($root.google.cloud.securitycenter.v2.Kubernetes.Node.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -105468,9 +109662,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            NodePool.verify = function verify(message) {
+                            NodePool.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.name != null && message.hasOwnProperty("name"))
                                     if (!$util.isString(message.name))
                                         return "name: string expected";
@@ -105478,7 +109676,7 @@
                                     if (!Array.isArray(message.nodes))
                                         return "nodes: array expected";
                                     for (var i = 0; i < message.nodes.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v2.Kubernetes.Node.verify(message.nodes[i]);
+                                        var error = $root.google.cloud.securitycenter.v2.Kubernetes.Node.verify(message.nodes[i], long + 1);
                                         if (error)
                                             return "nodes." + error;
                                     }
@@ -105494,9 +109692,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Kubernetes.NodePool} NodePool
                              */
-                            NodePool.fromObject = function fromObject(object) {
+                            NodePool.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Kubernetes.NodePool)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Kubernetes.NodePool();
                                 if (object.name != null)
                                     message.name = String(object.name);
@@ -105507,7 +109709,7 @@
                                     for (var i = 0; i < object.nodes.length; ++i) {
                                         if (typeof object.nodes[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.NodePool.nodes: object expected");
-                                        message.nodes[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Node.fromObject(object.nodes[i]);
+                                        message.nodes[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Node.fromObject(object.nodes[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -105591,7 +109793,7 @@
                             function Role(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -105676,9 +109878,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Role.decode = function decode(reader, length, error) {
+                            Role.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Kubernetes.Role();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -105698,7 +109904,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -105729,9 +109935,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Role.verify = function verify(message) {
+                            Role.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.kind != null && message.hasOwnProperty("kind"))
                                     switch (message.kind) {
                                     default:
@@ -105758,9 +109968,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Kubernetes.Role} Role
                              */
-                            Role.fromObject = function fromObject(object) {
+                            Role.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Kubernetes.Role)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Kubernetes.Role();
                                 switch (object.kind) {
                                 default:
@@ -105885,7 +110099,7 @@
                                 this.subjects = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -105981,9 +110195,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Binding.decode = function decode(reader, length, error) {
+                            Binding.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Kubernetes.Binding();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -105999,17 +110217,17 @@
                                             break;
                                         }
                                     case 3: {
-                                            message.role = $root.google.cloud.securitycenter.v2.Kubernetes.Role.decode(reader, reader.uint32());
+                                            message.role = $root.google.cloud.securitycenter.v2.Kubernetes.Role.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 4: {
                                             if (!(message.subjects && message.subjects.length))
                                                 message.subjects = [];
-                                            message.subjects.push($root.google.cloud.securitycenter.v2.Kubernetes.Subject.decode(reader, reader.uint32()));
+                                            message.subjects.push($root.google.cloud.securitycenter.v2.Kubernetes.Subject.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -106040,9 +110258,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Binding.verify = function verify(message) {
+                            Binding.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.ns != null && message.hasOwnProperty("ns"))
                                     if (!$util.isString(message.ns))
                                         return "ns: string expected";
@@ -106050,7 +110272,7 @@
                                     if (!$util.isString(message.name))
                                         return "name: string expected";
                                 if (message.role != null && message.hasOwnProperty("role")) {
-                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Role.verify(message.role);
+                                    var error = $root.google.cloud.securitycenter.v2.Kubernetes.Role.verify(message.role, long + 1);
                                     if (error)
                                         return "role." + error;
                                 }
@@ -106058,7 +110280,7 @@
                                     if (!Array.isArray(message.subjects))
                                         return "subjects: array expected";
                                     for (var i = 0; i < message.subjects.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v2.Kubernetes.Subject.verify(message.subjects[i]);
+                                        var error = $root.google.cloud.securitycenter.v2.Kubernetes.Subject.verify(message.subjects[i], long + 1);
                                         if (error)
                                             return "subjects." + error;
                                     }
@@ -106074,9 +110296,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Kubernetes.Binding} Binding
                              */
-                            Binding.fromObject = function fromObject(object) {
+                            Binding.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Kubernetes.Binding)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Kubernetes.Binding();
                                 if (object.ns != null)
                                     message.ns = String(object.ns);
@@ -106085,7 +110311,7 @@
                                 if (object.role != null) {
                                     if (typeof object.role !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.Binding.role: object expected");
-                                    message.role = $root.google.cloud.securitycenter.v2.Kubernetes.Role.fromObject(object.role);
+                                    message.role = $root.google.cloud.securitycenter.v2.Kubernetes.Role.fromObject(object.role, long + 1);
                                 }
                                 if (object.subjects) {
                                     if (!Array.isArray(object.subjects))
@@ -106094,7 +110320,7 @@
                                     for (var i = 0; i < object.subjects.length; ++i) {
                                         if (typeof object.subjects[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.Binding.subjects: object expected");
-                                        message.subjects[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Subject.fromObject(object.subjects[i]);
+                                        message.subjects[i] = $root.google.cloud.securitycenter.v2.Kubernetes.Subject.fromObject(object.subjects[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -106185,7 +110411,7 @@
                             function Subject(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -106270,9 +110496,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Subject.decode = function decode(reader, length, error) {
+                            Subject.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Kubernetes.Subject();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -106292,7 +110522,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -106323,9 +110553,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Subject.verify = function verify(message) {
+                            Subject.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.kind != null && message.hasOwnProperty("kind"))
                                     switch (message.kind) {
                                     default:
@@ -106353,9 +110587,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Kubernetes.Subject} Subject
                              */
-                            Subject.fromObject = function fromObject(object) {
+                            Subject.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Kubernetes.Subject)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Kubernetes.Subject();
                                 switch (object.kind) {
                                 default:
@@ -106488,7 +110726,7 @@
                             function AccessReview(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -106613,9 +110851,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AccessReview.decode = function decode(reader, length, error) {
+                            AccessReview.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Kubernetes.AccessReview();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -106651,7 +110893,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -106682,9 +110924,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AccessReview.verify = function verify(message) {
+                            AccessReview.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.group != null && message.hasOwnProperty("group"))
                                     if (!$util.isString(message.group))
                                         return "group: string expected";
@@ -106717,9 +110963,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Kubernetes.AccessReview} AccessReview
                              */
-                            AccessReview.fromObject = function fromObject(object) {
+                            AccessReview.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Kubernetes.AccessReview)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Kubernetes.AccessReview();
                                 if (object.group != null)
                                     message.group = String(object.group);
@@ -106831,7 +111081,7 @@
                                 this.containers = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -106937,9 +111187,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Object.decode = function decode(reader, length, error) {
+                            Object.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Kubernetes.Object();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -106965,11 +111219,11 @@
                                     case 5: {
                                             if (!(message.containers && message.containers.length))
                                                 message.containers = [];
-                                            message.containers.push($root.google.cloud.securitycenter.v2.Container.decode(reader, reader.uint32()));
+                                            message.containers.push($root.google.cloud.securitycenter.v2.Container.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -107000,9 +111254,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Object.verify = function verify(message) {
+                            Object.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.group != null && message.hasOwnProperty("group"))
                                     if (!$util.isString(message.group))
                                         return "group: string expected";
@@ -107019,7 +111277,7 @@
                                     if (!Array.isArray(message.containers))
                                         return "containers: array expected";
                                     for (var i = 0; i < message.containers.length; ++i) {
-                                        var error = $root.google.cloud.securitycenter.v2.Container.verify(message.containers[i]);
+                                        var error = $root.google.cloud.securitycenter.v2.Container.verify(message.containers[i], long + 1);
                                         if (error)
                                             return "containers." + error;
                                     }
@@ -107035,9 +111293,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.Kubernetes.Object} Object
                              */
-                            Object.fromObject = function fromObject(object) {
+                            Object.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.Kubernetes.Object)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.Kubernetes.Object();
                                 if (object.group != null)
                                     message.group = String(object.group);
@@ -107054,7 +111316,7 @@
                                     for (var i = 0; i < object.containers.length; ++i) {
                                         if (typeof object.containers[i] !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.Kubernetes.Object.containers: object expected");
-                                        message.containers[i] = $root.google.cloud.securitycenter.v2.Container.fromObject(object.containers[i]);
+                                        message.containers[i] = $root.google.cloud.securitycenter.v2.Container.fromObject(object.containers[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -107149,7 +111411,7 @@
                         function LoadBalancer(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -107214,9 +111476,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        LoadBalancer.decode = function decode(reader, length, error) {
+                        LoadBalancer.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.LoadBalancer();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -107228,7 +111494,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -107259,9 +111525,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        LoadBalancer.verify = function verify(message) {
+                        LoadBalancer.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -107276,9 +111546,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.LoadBalancer} LoadBalancer
                          */
-                        LoadBalancer.fromObject = function fromObject(object) {
+                        LoadBalancer.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.LoadBalancer)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.LoadBalancer();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -107354,7 +111628,7 @@
                         function LogEntry(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -107433,9 +111707,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        LogEntry.decode = function decode(reader, length, error) {
+                        LogEntry.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.LogEntry();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -107443,11 +111721,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.cloudLoggingEntry = $root.google.cloud.securitycenter.v2.CloudLoggingEntry.decode(reader, reader.uint32());
+                                        message.cloudLoggingEntry = $root.google.cloud.securitycenter.v2.CloudLoggingEntry.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -107478,14 +111756,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        LogEntry.verify = function verify(message) {
+                        LogEntry.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.cloudLoggingEntry != null && message.hasOwnProperty("cloudLoggingEntry")) {
                                 properties.logEntry = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v2.CloudLoggingEntry.verify(message.cloudLoggingEntry);
+                                    var error = $root.google.cloud.securitycenter.v2.CloudLoggingEntry.verify(message.cloudLoggingEntry, long + 1);
                                     if (error)
                                         return "cloudLoggingEntry." + error;
                                 }
@@ -107501,14 +111783,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.LogEntry} LogEntry
                          */
-                        LogEntry.fromObject = function fromObject(object) {
+                        LogEntry.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.LogEntry)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.LogEntry();
                             if (object.cloudLoggingEntry != null) {
                                 if (typeof object.cloudLoggingEntry !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.LogEntry.cloudLoggingEntry: object expected");
-                                message.cloudLoggingEntry = $root.google.cloud.securitycenter.v2.CloudLoggingEntry.fromObject(object.cloudLoggingEntry);
+                                message.cloudLoggingEntry = $root.google.cloud.securitycenter.v2.CloudLoggingEntry.fromObject(object.cloudLoggingEntry, long + 1);
                             }
                             return message;
                         };
@@ -107586,7 +111872,7 @@
                         function CloudLoggingEntry(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -107681,9 +111967,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CloudLoggingEntry.decode = function decode(reader, length, error) {
+                        CloudLoggingEntry.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CloudLoggingEntry();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -107703,11 +111993,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.timestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.timestamp = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -107738,9 +112028,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CloudLoggingEntry.verify = function verify(message) {
+                        CloudLoggingEntry.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.insertId != null && message.hasOwnProperty("insertId"))
                                 if (!$util.isString(message.insertId))
                                     return "insertId: string expected";
@@ -107751,7 +112045,7 @@
                                 if (!$util.isString(message.resourceContainer))
                                     return "resourceContainer: string expected";
                             if (message.timestamp != null && message.hasOwnProperty("timestamp")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.timestamp);
+                                var error = $root.google.protobuf.Timestamp.verify(message.timestamp, long + 1);
                                 if (error)
                                     return "timestamp." + error;
                             }
@@ -107766,9 +112060,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CloudLoggingEntry} CloudLoggingEntry
                          */
-                        CloudLoggingEntry.fromObject = function fromObject(object) {
+                        CloudLoggingEntry.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CloudLoggingEntry)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CloudLoggingEntry();
                             if (object.insertId != null)
                                 message.insertId = String(object.insertId);
@@ -107779,7 +112077,7 @@
                             if (object.timestamp != null) {
                                 if (typeof object.timestamp !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CloudLoggingEntry.timestamp: object expected");
-                                message.timestamp = $root.google.protobuf.Timestamp.fromObject(object.timestamp);
+                                message.timestamp = $root.google.protobuf.Timestamp.fromObject(object.timestamp, long + 1);
                             }
                             return message;
                         };
@@ -107870,7 +112168,7 @@
                             this.additionalTechniques = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -107987,9 +112285,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        MitreAttack.decode = function decode(reader, length, error) {
+                        MitreAttack.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.MitreAttack();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -108038,7 +112340,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -108069,9 +112371,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        MitreAttack.verify = function verify(message) {
+                        MitreAttack.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.primaryTactic != null && message.hasOwnProperty("primaryTactic"))
                                 switch (message.primaryTactic) {
                                 default:
@@ -108428,9 +112734,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.MitreAttack} MitreAttack
                          */
-                        MitreAttack.fromObject = function fromObject(object) {
+                        MitreAttack.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.MitreAttack)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.MitreAttack();
                             switch (object.primaryTactic) {
                             default:
@@ -110127,7 +114437,7 @@
                         function Network(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -110192,9 +114502,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Network.decode = function decode(reader, length, error) {
+                        Network.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Network();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -110206,7 +114520,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -110237,9 +114551,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Network.verify = function verify(message) {
+                        Network.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -110254,9 +114572,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Network} Network
                          */
-                        Network.fromObject = function fromObject(object) {
+                        Network.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Network)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Network();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -110335,7 +114657,7 @@
                         function Notebook(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -110430,9 +114752,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Notebook.decode = function decode(reader, length, error) {
+                        Notebook.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Notebook();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -110452,11 +114778,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.notebookUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.notebookUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -110487,9 +114813,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Notebook.verify = function verify(message) {
+                        Notebook.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -110500,7 +114830,7 @@
                                 if (!$util.isString(message.lastAuthor))
                                     return "lastAuthor: string expected";
                             if (message.notebookUpdateTime != null && message.hasOwnProperty("notebookUpdateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.notebookUpdateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.notebookUpdateTime, long + 1);
                                 if (error)
                                     return "notebookUpdateTime." + error;
                             }
@@ -110515,9 +114845,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Notebook} Notebook
                          */
-                        Notebook.fromObject = function fromObject(object) {
+                        Notebook.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Notebook)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Notebook();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -110528,7 +114862,7 @@
                             if (object.notebookUpdateTime != null) {
                                 if (typeof object.notebookUpdateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Notebook.notebookUpdateTime: object expected");
-                                message.notebookUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.notebookUpdateTime);
+                                message.notebookUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.notebookUpdateTime, long + 1);
                             }
                             return message;
                         };
@@ -110612,7 +114946,7 @@
                         function OrgPolicy(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -110677,9 +115011,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        OrgPolicy.decode = function decode(reader, length, error) {
+                        OrgPolicy.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.OrgPolicy();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -110691,7 +115029,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -110722,9 +115060,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        OrgPolicy.verify = function verify(message) {
+                        OrgPolicy.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -110739,9 +115081,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.OrgPolicy} OrgPolicy
                          */
-                        OrgPolicy.fromObject = function fromObject(object) {
+                        OrgPolicy.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.OrgPolicy)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.OrgPolicy();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -110830,7 +115176,7 @@
                             this.envVariables = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -110998,9 +115344,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Process.decode = function decode(reader, length, error) {
+                        Process.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Process();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -111012,17 +115362,17 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.binary = $root.google.cloud.securitycenter.v2.File.decode(reader, reader.uint32());
+                                        message.binary = $root.google.cloud.securitycenter.v2.File.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.libraries && message.libraries.length))
                                             message.libraries = [];
-                                        message.libraries.push($root.google.cloud.securitycenter.v2.File.decode(reader, reader.uint32()));
+                                        message.libraries.push($root.google.cloud.securitycenter.v2.File.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 4: {
-                                        message.script = $root.google.cloud.securitycenter.v2.File.decode(reader, reader.uint32());
+                                        message.script = $root.google.cloud.securitycenter.v2.File.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
@@ -111038,7 +115388,7 @@
                                 case 7: {
                                         if (!(message.envVariables && message.envVariables.length))
                                             message.envVariables = [];
-                                        message.envVariables.push($root.google.cloud.securitycenter.v2.EnvironmentVariable.decode(reader, reader.uint32()));
+                                        message.envVariables.push($root.google.cloud.securitycenter.v2.EnvironmentVariable.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 8: {
@@ -111058,7 +115408,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -111089,14 +115439,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Process.verify = function verify(message) {
+                        Process.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.binary != null && message.hasOwnProperty("binary")) {
-                                var error = $root.google.cloud.securitycenter.v2.File.verify(message.binary);
+                                var error = $root.google.cloud.securitycenter.v2.File.verify(message.binary, long + 1);
                                 if (error)
                                     return "binary." + error;
                             }
@@ -111104,13 +115458,13 @@
                                 if (!Array.isArray(message.libraries))
                                     return "libraries: array expected";
                                 for (var i = 0; i < message.libraries.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.File.verify(message.libraries[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.File.verify(message.libraries[i], long + 1);
                                     if (error)
                                         return "libraries." + error;
                                 }
                             }
                             if (message.script != null && message.hasOwnProperty("script")) {
-                                var error = $root.google.cloud.securitycenter.v2.File.verify(message.script);
+                                var error = $root.google.cloud.securitycenter.v2.File.verify(message.script, long + 1);
                                 if (error)
                                     return "script." + error;
                             }
@@ -111128,7 +115482,7 @@
                                 if (!Array.isArray(message.envVariables))
                                     return "envVariables: array expected";
                                 for (var i = 0; i < message.envVariables.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.EnvironmentVariable.verify(message.envVariables[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.EnvironmentVariable.verify(message.envVariables[i], long + 1);
                                     if (error)
                                         return "envVariables." + error;
                                 }
@@ -111156,16 +115510,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Process} Process
                          */
-                        Process.fromObject = function fromObject(object) {
+                        Process.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Process)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Process();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.binary != null) {
                                 if (typeof object.binary !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Process.binary: object expected");
-                                message.binary = $root.google.cloud.securitycenter.v2.File.fromObject(object.binary);
+                                message.binary = $root.google.cloud.securitycenter.v2.File.fromObject(object.binary, long + 1);
                             }
                             if (object.libraries) {
                                 if (!Array.isArray(object.libraries))
@@ -111174,13 +115532,13 @@
                                 for (var i = 0; i < object.libraries.length; ++i) {
                                     if (typeof object.libraries[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Process.libraries: object expected");
-                                    message.libraries[i] = $root.google.cloud.securitycenter.v2.File.fromObject(object.libraries[i]);
+                                    message.libraries[i] = $root.google.cloud.securitycenter.v2.File.fromObject(object.libraries[i], long + 1);
                                 }
                             }
                             if (object.script != null) {
                                 if (typeof object.script !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Process.script: object expected");
-                                message.script = $root.google.cloud.securitycenter.v2.File.fromObject(object.script);
+                                message.script = $root.google.cloud.securitycenter.v2.File.fromObject(object.script, long + 1);
                             }
                             if (object.args) {
                                 if (!Array.isArray(object.args))
@@ -111198,7 +115556,7 @@
                                 for (var i = 0; i < object.envVariables.length; ++i) {
                                     if (typeof object.envVariables[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Process.envVariables: object expected");
-                                    message.envVariables[i] = $root.google.cloud.securitycenter.v2.EnvironmentVariable.fromObject(object.envVariables[i]);
+                                    message.envVariables[i] = $root.google.cloud.securitycenter.v2.EnvironmentVariable.fromObject(object.envVariables[i], long + 1);
                                 }
                             }
                             if (object.envVariablesTruncated != null)
@@ -111366,7 +115724,7 @@
                         function EnvironmentVariable(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -111441,9 +115799,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EnvironmentVariable.decode = function decode(reader, length, error) {
+                        EnvironmentVariable.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.EnvironmentVariable();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -111459,7 +115821,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -111490,9 +115852,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EnvironmentVariable.verify = function verify(message) {
+                        EnvironmentVariable.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -111510,9 +115876,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.EnvironmentVariable} EnvironmentVariable
                          */
-                        EnvironmentVariable.fromObject = function fromObject(object) {
+                        EnvironmentVariable.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.EnvironmentVariable)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.EnvironmentVariable();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -111597,7 +115967,7 @@
                             this.marks = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -111683,9 +116053,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityMarks.decode = function decode(reader, length, error) {
+                        SecurityMarks.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.SecurityMarks(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -111712,10 +116086,12 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.marks, key);
                                         message.marks[key] = value;
                                         break;
                                     }
@@ -111724,7 +116100,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -111755,9 +116131,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityMarks.verify = function verify(message) {
+                        SecurityMarks.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -111783,9 +116163,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.SecurityMarks} SecurityMarks
                          */
-                        SecurityMarks.fromObject = function fromObject(object) {
+                        SecurityMarks.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.SecurityMarks)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.SecurityMarks();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -111793,8 +116177,11 @@
                                 if (typeof object.marks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.SecurityMarks.marks: object expected");
                                 message.marks = {};
-                                for (var keys = Object.keys(object.marks), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.marks), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.marks, keys[i]);
                                     message.marks[keys[i]] = String(object.marks[keys[i]]);
+                                }
                             }
                             if (object.canonicalName != null)
                                 message.canonicalName = String(object.canonicalName);
@@ -111825,8 +116212,11 @@
                             var keys2;
                             if (message.marks && (keys2 = Object.keys(message.marks)).length) {
                                 object.marks = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.marks, keys2[j]);
                                     object.marks[keys2[j]] = message.marks[keys2[j]];
+                                }
                             }
                             if (message.canonicalName != null && message.hasOwnProperty("canonicalName"))
                                 object.canonicalName = message.canonicalName;
@@ -111890,7 +116280,7 @@
                             this.policyDriftDetails = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -112026,9 +116416,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityPosture.decode = function decode(reader, length, error) {
+                        SecurityPosture.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.SecurityPosture();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -112066,11 +116460,11 @@
                                 case 8: {
                                         if (!(message.policyDriftDetails && message.policyDriftDetails.length))
                                             message.policyDriftDetails = [];
-                                        message.policyDriftDetails.push($root.google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails.decode(reader, reader.uint32()));
+                                        message.policyDriftDetails.push($root.google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -112101,9 +116495,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityPosture.verify = function verify(message) {
+                        SecurityPosture.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -112129,7 +116527,7 @@
                                 if (!Array.isArray(message.policyDriftDetails))
                                     return "policyDriftDetails: array expected";
                                 for (var i = 0; i < message.policyDriftDetails.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails.verify(message.policyDriftDetails[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails.verify(message.policyDriftDetails[i], long + 1);
                                     if (error)
                                         return "policyDriftDetails." + error;
                                 }
@@ -112145,9 +116543,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.SecurityPosture} SecurityPosture
                          */
-                        SecurityPosture.fromObject = function fromObject(object) {
+                        SecurityPosture.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.SecurityPosture)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.SecurityPosture();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -112170,7 +116572,7 @@
                                 for (var i = 0; i < object.policyDriftDetails.length; ++i) {
                                     if (typeof object.policyDriftDetails[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.SecurityPosture.policyDriftDetails: object expected");
-                                    message.policyDriftDetails[i] = $root.google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails.fromObject(object.policyDriftDetails[i]);
+                                    message.policyDriftDetails[i] = $root.google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails.fromObject(object.policyDriftDetails[i], long + 1);
                                 }
                             }
                             return message;
@@ -112270,7 +116672,7 @@
                             function PolicyDriftDetails(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -112355,9 +116757,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            PolicyDriftDetails.decode = function decode(reader, length, error) {
+                            PolicyDriftDetails.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -112377,7 +116783,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -112408,9 +116814,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            PolicyDriftDetails.verify = function verify(message) {
+                            PolicyDriftDetails.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.field != null && message.hasOwnProperty("field"))
                                     if (!$util.isString(message.field))
                                         return "field: string expected";
@@ -112431,9 +116841,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails} PolicyDriftDetails
                              */
-                            PolicyDriftDetails.fromObject = function fromObject(object) {
+                            PolicyDriftDetails.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.SecurityPosture.PolicyDriftDetails();
                                 if (object.field != null)
                                     message.field = String(object.field);
@@ -112525,7 +116939,7 @@
                             this.relatedFindings = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -112601,9 +117015,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ToxicCombination.decode = function decode(reader, length, error) {
+                        ToxicCombination.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ToxicCombination();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -112621,7 +117039,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -112652,9 +117070,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ToxicCombination.verify = function verify(message) {
+                        ToxicCombination.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.attackExposureScore != null && message.hasOwnProperty("attackExposureScore"))
                                 if (typeof message.attackExposureScore !== "number")
                                     return "attackExposureScore: number expected";
@@ -112676,9 +117098,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ToxicCombination} ToxicCombination
                          */
-                        ToxicCombination.fromObject = function fromObject(object) {
+                        ToxicCombination.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ToxicCombination)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ToxicCombination();
                             if (object.attackExposureScore != null)
                                 message.attackExposureScore = Number(object.attackExposureScore);
@@ -112771,7 +117197,7 @@
                             this.pipelines = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -112848,9 +117274,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        VertexAi.decode = function decode(reader, length, error) {
+                        VertexAi.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.VertexAi();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -112860,17 +117290,17 @@
                                 case 1: {
                                         if (!(message.datasets && message.datasets.length))
                                             message.datasets = [];
-                                        message.datasets.push($root.google.cloud.securitycenter.v2.VertexAi.Dataset.decode(reader, reader.uint32()));
+                                        message.datasets.push($root.google.cloud.securitycenter.v2.VertexAi.Dataset.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
                                         if (!(message.pipelines && message.pipelines.length))
                                             message.pipelines = [];
-                                        message.pipelines.push($root.google.cloud.securitycenter.v2.VertexAi.Pipeline.decode(reader, reader.uint32()));
+                                        message.pipelines.push($root.google.cloud.securitycenter.v2.VertexAi.Pipeline.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -112901,14 +117331,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        VertexAi.verify = function verify(message) {
+                        VertexAi.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.datasets != null && message.hasOwnProperty("datasets")) {
                                 if (!Array.isArray(message.datasets))
                                     return "datasets: array expected";
                                 for (var i = 0; i < message.datasets.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.VertexAi.Dataset.verify(message.datasets[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.VertexAi.Dataset.verify(message.datasets[i], long + 1);
                                     if (error)
                                         return "datasets." + error;
                                 }
@@ -112917,7 +117351,7 @@
                                 if (!Array.isArray(message.pipelines))
                                     return "pipelines: array expected";
                                 for (var i = 0; i < message.pipelines.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.VertexAi.Pipeline.verify(message.pipelines[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.VertexAi.Pipeline.verify(message.pipelines[i], long + 1);
                                     if (error)
                                         return "pipelines." + error;
                                 }
@@ -112933,9 +117367,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.VertexAi} VertexAi
                          */
-                        VertexAi.fromObject = function fromObject(object) {
+                        VertexAi.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.VertexAi)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.VertexAi();
                             if (object.datasets) {
                                 if (!Array.isArray(object.datasets))
@@ -112944,7 +117382,7 @@
                                 for (var i = 0; i < object.datasets.length; ++i) {
                                     if (typeof object.datasets[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.VertexAi.datasets: object expected");
-                                    message.datasets[i] = $root.google.cloud.securitycenter.v2.VertexAi.Dataset.fromObject(object.datasets[i]);
+                                    message.datasets[i] = $root.google.cloud.securitycenter.v2.VertexAi.Dataset.fromObject(object.datasets[i], long + 1);
                                 }
                             }
                             if (object.pipelines) {
@@ -112954,7 +117392,7 @@
                                 for (var i = 0; i < object.pipelines.length; ++i) {
                                     if (typeof object.pipelines[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.VertexAi.pipelines: object expected");
-                                    message.pipelines[i] = $root.google.cloud.securitycenter.v2.VertexAi.Pipeline.fromObject(object.pipelines[i]);
+                                    message.pipelines[i] = $root.google.cloud.securitycenter.v2.VertexAi.Pipeline.fromObject(object.pipelines[i], long + 1);
                                 }
                             }
                             return message;
@@ -113038,7 +117476,7 @@
                             function Dataset(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -113123,9 +117561,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Dataset.decode = function decode(reader, length, error) {
+                            Dataset.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.VertexAi.Dataset();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -113145,7 +117587,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -113176,9 +117618,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Dataset.verify = function verify(message) {
+                            Dataset.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.name != null && message.hasOwnProperty("name"))
                                     if (!$util.isString(message.name))
                                         return "name: string expected";
@@ -113199,9 +117645,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.VertexAi.Dataset} Dataset
                              */
-                            Dataset.fromObject = function fromObject(object) {
+                            Dataset.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.VertexAi.Dataset)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.VertexAi.Dataset();
                                 if (object.name != null)
                                     message.name = String(object.name);
@@ -113289,7 +117739,7 @@
                             function Pipeline(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -113364,9 +117814,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Pipeline.decode = function decode(reader, length, error) {
+                            Pipeline.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.VertexAi.Pipeline();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -113382,7 +117836,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -113413,9 +117867,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Pipeline.verify = function verify(message) {
+                            Pipeline.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.name != null && message.hasOwnProperty("name"))
                                     if (!$util.isString(message.name))
                                         return "name: string expected";
@@ -113433,9 +117891,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.VertexAi.Pipeline} Pipeline
                              */
-                            Pipeline.fromObject = function fromObject(object) {
+                            Pipeline.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.VertexAi.Pipeline)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.VertexAi.Pipeline();
                                 if (object.name != null)
                                     message.name = String(object.name);
@@ -113527,7 +117989,7 @@
                             this.cwes = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -113653,9 +118115,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Vulnerability.decode = function decode(reader, length, error) {
+                        Vulnerability.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Vulnerability();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -113663,19 +118129,19 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.cve = $root.google.cloud.securitycenter.v2.Cve.decode(reader, reader.uint32());
+                                        message.cve = $root.google.cloud.securitycenter.v2.Cve.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.offendingPackage = $root.google.cloud.securitycenter.v2.Package.decode(reader, reader.uint32());
+                                        message.offendingPackage = $root.google.cloud.securitycenter.v2.Package.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.fixedPackage = $root.google.cloud.securitycenter.v2.Package.decode(reader, reader.uint32());
+                                        message.fixedPackage = $root.google.cloud.securitycenter.v2.Package.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
-                                        message.securityBulletin = $root.google.cloud.securitycenter.v2.SecurityBulletin.decode(reader, reader.uint32());
+                                        message.securityBulletin = $root.google.cloud.securitycenter.v2.SecurityBulletin.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
@@ -113689,11 +118155,11 @@
                                 case 7: {
                                         if (!(message.cwes && message.cwes.length))
                                             message.cwes = [];
-                                        message.cwes.push($root.google.cloud.securitycenter.v2.Cwe.decode(reader, reader.uint32()));
+                                        message.cwes.push($root.google.cloud.securitycenter.v2.Cwe.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -113724,26 +118190,30 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Vulnerability.verify = function verify(message) {
+                        Vulnerability.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.cve != null && message.hasOwnProperty("cve")) {
-                                var error = $root.google.cloud.securitycenter.v2.Cve.verify(message.cve);
+                                var error = $root.google.cloud.securitycenter.v2.Cve.verify(message.cve, long + 1);
                                 if (error)
                                     return "cve." + error;
                             }
                             if (message.offendingPackage != null && message.hasOwnProperty("offendingPackage")) {
-                                var error = $root.google.cloud.securitycenter.v2.Package.verify(message.offendingPackage);
+                                var error = $root.google.cloud.securitycenter.v2.Package.verify(message.offendingPackage, long + 1);
                                 if (error)
                                     return "offendingPackage." + error;
                             }
                             if (message.fixedPackage != null && message.hasOwnProperty("fixedPackage")) {
-                                var error = $root.google.cloud.securitycenter.v2.Package.verify(message.fixedPackage);
+                                var error = $root.google.cloud.securitycenter.v2.Package.verify(message.fixedPackage, long + 1);
                                 if (error)
                                     return "fixedPackage." + error;
                             }
                             if (message.securityBulletin != null && message.hasOwnProperty("securityBulletin")) {
-                                var error = $root.google.cloud.securitycenter.v2.SecurityBulletin.verify(message.securityBulletin);
+                                var error = $root.google.cloud.securitycenter.v2.SecurityBulletin.verify(message.securityBulletin, long + 1);
                                 if (error)
                                     return "securityBulletin." + error;
                             }
@@ -113757,7 +118227,7 @@
                                 if (!Array.isArray(message.cwes))
                                     return "cwes: array expected";
                                 for (var i = 0; i < message.cwes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Cwe.verify(message.cwes[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Cwe.verify(message.cwes[i], long + 1);
                                     if (error)
                                         return "cwes." + error;
                                 }
@@ -113773,29 +118243,33 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Vulnerability} Vulnerability
                          */
-                        Vulnerability.fromObject = function fromObject(object) {
+                        Vulnerability.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Vulnerability)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Vulnerability();
                             if (object.cve != null) {
                                 if (typeof object.cve !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Vulnerability.cve: object expected");
-                                message.cve = $root.google.cloud.securitycenter.v2.Cve.fromObject(object.cve);
+                                message.cve = $root.google.cloud.securitycenter.v2.Cve.fromObject(object.cve, long + 1);
                             }
                             if (object.offendingPackage != null) {
                                 if (typeof object.offendingPackage !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Vulnerability.offendingPackage: object expected");
-                                message.offendingPackage = $root.google.cloud.securitycenter.v2.Package.fromObject(object.offendingPackage);
+                                message.offendingPackage = $root.google.cloud.securitycenter.v2.Package.fromObject(object.offendingPackage, long + 1);
                             }
                             if (object.fixedPackage != null) {
                                 if (typeof object.fixedPackage !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Vulnerability.fixedPackage: object expected");
-                                message.fixedPackage = $root.google.cloud.securitycenter.v2.Package.fromObject(object.fixedPackage);
+                                message.fixedPackage = $root.google.cloud.securitycenter.v2.Package.fromObject(object.fixedPackage, long + 1);
                             }
                             if (object.securityBulletin != null) {
                                 if (typeof object.securityBulletin !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Vulnerability.securityBulletin: object expected");
-                                message.securityBulletin = $root.google.cloud.securitycenter.v2.SecurityBulletin.fromObject(object.securityBulletin);
+                                message.securityBulletin = $root.google.cloud.securitycenter.v2.SecurityBulletin.fromObject(object.securityBulletin, long + 1);
                             }
                             if (object.providerRiskScore != null)
                                 if ($util.Long)
@@ -113815,7 +118289,7 @@
                                 for (var i = 0; i < object.cwes.length; ++i) {
                                     if (typeof object.cwes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Vulnerability.cwes: object expected");
-                                    message.cwes[i] = $root.google.cloud.securitycenter.v2.Cwe.fromObject(object.cwes[i]);
+                                    message.cwes[i] = $root.google.cloud.securitycenter.v2.Cwe.fromObject(object.cwes[i], long + 1);
                                 }
                             }
                             return message;
@@ -113930,7 +118404,7 @@
                             this.references = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -114086,9 +118560,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Cve.decode = function decode(reader, length, error) {
+                        Cve.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Cve();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -114102,11 +118580,11 @@
                                 case 2: {
                                         if (!(message.references && message.references.length))
                                             message.references = [];
-                                        message.references.push($root.google.cloud.securitycenter.v2.Reference.decode(reader, reader.uint32()));
+                                        message.references.push($root.google.cloud.securitycenter.v2.Reference.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
-                                        message.cvssv3 = $root.google.cloud.securitycenter.v2.Cvssv3.decode(reader, reader.uint32());
+                                        message.cvssv3 = $root.google.cloud.securitycenter.v2.Cvssv3.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
@@ -114130,15 +118608,15 @@
                                         break;
                                     }
                                 case 9: {
-                                        message.exploitReleaseDate = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.exploitReleaseDate = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.firstExploitationDate = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.firstExploitationDate = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -114169,9 +118647,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Cve.verify = function verify(message) {
+                        Cve.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.id != null && message.hasOwnProperty("id"))
                                 if (!$util.isString(message.id))
                                     return "id: string expected";
@@ -114179,13 +118661,13 @@
                                 if (!Array.isArray(message.references))
                                     return "references: array expected";
                                 for (var i = 0; i < message.references.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Reference.verify(message.references[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Reference.verify(message.references[i], long + 1);
                                     if (error)
                                         return "references." + error;
                                 }
                             }
                             if (message.cvssv3 != null && message.hasOwnProperty("cvssv3")) {
-                                var error = $root.google.cloud.securitycenter.v2.Cvssv3.verify(message.cvssv3);
+                                var error = $root.google.cloud.securitycenter.v2.Cvssv3.verify(message.cvssv3, long + 1);
                                 if (error)
                                     return "cvssv3." + error;
                             }
@@ -114222,12 +118704,12 @@
                                 if (typeof message.zeroDay !== "boolean")
                                     return "zeroDay: boolean expected";
                             if (message.exploitReleaseDate != null && message.hasOwnProperty("exploitReleaseDate")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.exploitReleaseDate);
+                                var error = $root.google.protobuf.Timestamp.verify(message.exploitReleaseDate, long + 1);
                                 if (error)
                                     return "exploitReleaseDate." + error;
                             }
                             if (message.firstExploitationDate != null && message.hasOwnProperty("firstExploitationDate")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.firstExploitationDate);
+                                var error = $root.google.protobuf.Timestamp.verify(message.firstExploitationDate, long + 1);
                                 if (error)
                                     return "firstExploitationDate." + error;
                             }
@@ -114242,9 +118724,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Cve} Cve
                          */
-                        Cve.fromObject = function fromObject(object) {
+                        Cve.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Cve)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Cve();
                             if (object.id != null)
                                 message.id = String(object.id);
@@ -114255,13 +118741,13 @@
                                 for (var i = 0; i < object.references.length; ++i) {
                                     if (typeof object.references[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Cve.references: object expected");
-                                    message.references[i] = $root.google.cloud.securitycenter.v2.Reference.fromObject(object.references[i]);
+                                    message.references[i] = $root.google.cloud.securitycenter.v2.Reference.fromObject(object.references[i], long + 1);
                                 }
                             }
                             if (object.cvssv3 != null) {
                                 if (typeof object.cvssv3 !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Cve.cvssv3: object expected");
-                                message.cvssv3 = $root.google.cloud.securitycenter.v2.Cvssv3.fromObject(object.cvssv3);
+                                message.cvssv3 = $root.google.cloud.securitycenter.v2.Cvssv3.fromObject(object.cvssv3, long + 1);
                             }
                             if (object.upstreamFixAvailable != null)
                                 message.upstreamFixAvailable = Boolean(object.upstreamFixAvailable);
@@ -114332,12 +118818,12 @@
                             if (object.exploitReleaseDate != null) {
                                 if (typeof object.exploitReleaseDate !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Cve.exploitReleaseDate: object expected");
-                                message.exploitReleaseDate = $root.google.protobuf.Timestamp.fromObject(object.exploitReleaseDate);
+                                message.exploitReleaseDate = $root.google.protobuf.Timestamp.fromObject(object.exploitReleaseDate, long + 1);
                             }
                             if (object.firstExploitationDate != null) {
                                 if (typeof object.firstExploitationDate !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Cve.firstExploitationDate: object expected");
-                                message.firstExploitationDate = $root.google.protobuf.Timestamp.fromObject(object.firstExploitationDate);
+                                message.firstExploitationDate = $root.google.protobuf.Timestamp.fromObject(object.firstExploitationDate, long + 1);
                             }
                             return message;
                         };
@@ -114486,7 +118972,7 @@
                         function Reference(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -114561,9 +119047,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Reference.decode = function decode(reader, length, error) {
+                        Reference.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Reference();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -114579,7 +119069,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -114610,9 +119100,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Reference.verify = function verify(message) {
+                        Reference.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.source != null && message.hasOwnProperty("source"))
                                 if (!$util.isString(message.source))
                                     return "source: string expected";
@@ -114630,9 +119124,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Reference} Reference
                          */
-                        Reference.fromObject = function fromObject(object) {
+                        Reference.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Reference)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Reference();
                             if (object.source != null)
                                 message.source = String(object.source);
@@ -114722,7 +119220,7 @@
                         function Cvssv3(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -114867,9 +119365,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Cvssv3.decode = function decode(reader, length, error) {
+                        Cvssv3.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Cvssv3();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -114913,7 +119415,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -114944,9 +119446,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Cvssv3.verify = function verify(message) {
+                        Cvssv3.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.baseScore != null && message.hasOwnProperty("baseScore"))
                                 if (typeof message.baseScore !== "number")
                                     return "baseScore: number expected";
@@ -115039,9 +119545,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Cvssv3} Cvssv3
                          */
-                        Cvssv3.fromObject = function fromObject(object) {
+                        Cvssv3.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Cvssv3)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Cvssv3();
                             if (object.baseScore != null)
                                 message.baseScore = Number(object.baseScore);
@@ -115433,7 +119943,7 @@
                         function Package(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -115528,9 +120038,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Package.decode = function decode(reader, length, error) {
+                        Package.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Package();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -115554,7 +120068,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -115585,9 +120099,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Package.verify = function verify(message) {
+                        Package.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.packageName != null && message.hasOwnProperty("packageName"))
                                 if (!$util.isString(message.packageName))
                                     return "packageName: string expected";
@@ -115611,9 +120129,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Package} Package
                          */
-                        Package.fromObject = function fromObject(object) {
+                        Package.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Package)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Package();
                             if (object.packageName != null)
                                 message.packageName = String(object.packageName);
@@ -115707,7 +120229,7 @@
                         function SecurityBulletin(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -115792,9 +120314,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityBulletin.decode = function decode(reader, length, error) {
+                        SecurityBulletin.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.SecurityBulletin();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -115806,7 +120332,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.submissionTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.submissionTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -115814,7 +120340,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -115845,14 +120371,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityBulletin.verify = function verify(message) {
+                        SecurityBulletin.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.bulletinId != null && message.hasOwnProperty("bulletinId"))
                                 if (!$util.isString(message.bulletinId))
                                     return "bulletinId: string expected";
                             if (message.submissionTime != null && message.hasOwnProperty("submissionTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.submissionTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.submissionTime, long + 1);
                                 if (error)
                                     return "submissionTime." + error;
                             }
@@ -115870,16 +120400,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.SecurityBulletin} SecurityBulletin
                          */
-                        SecurityBulletin.fromObject = function fromObject(object) {
+                        SecurityBulletin.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.SecurityBulletin)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.SecurityBulletin();
                             if (object.bulletinId != null)
                                 message.bulletinId = String(object.bulletinId);
                             if (object.submissionTime != null) {
                                 if (typeof object.submissionTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.SecurityBulletin.submissionTime: object expected");
-                                message.submissionTime = $root.google.protobuf.Timestamp.fromObject(object.submissionTime);
+                                message.submissionTime = $root.google.protobuf.Timestamp.fromObject(object.submissionTime, long + 1);
                             }
                             if (object.suggestedUpgradeVersion != null)
                                 message.suggestedUpgradeVersion = String(object.suggestedUpgradeVersion);
@@ -115964,7 +120498,7 @@
                             this.references = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -116040,9 +120574,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Cwe.decode = function decode(reader, length, error) {
+                        Cwe.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Cwe();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -116056,11 +120594,11 @@
                                 case 2: {
                                         if (!(message.references && message.references.length))
                                             message.references = [];
-                                        message.references.push($root.google.cloud.securitycenter.v2.Reference.decode(reader, reader.uint32()));
+                                        message.references.push($root.google.cloud.securitycenter.v2.Reference.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -116091,9 +120629,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Cwe.verify = function verify(message) {
+                        Cwe.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.id != null && message.hasOwnProperty("id"))
                                 if (!$util.isString(message.id))
                                     return "id: string expected";
@@ -116101,7 +120643,7 @@
                                 if (!Array.isArray(message.references))
                                     return "references: array expected";
                                 for (var i = 0; i < message.references.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Reference.verify(message.references[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Reference.verify(message.references[i], long + 1);
                                     if (error)
                                         return "references." + error;
                                 }
@@ -116117,9 +120659,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Cwe} Cwe
                          */
-                        Cwe.fromObject = function fromObject(object) {
+                        Cwe.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Cwe)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Cwe();
                             if (object.id != null)
                                 message.id = String(object.id);
@@ -116130,7 +120676,7 @@
                                 for (var i = 0; i < object.references.length; ++i) {
                                     if (typeof object.references[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Cwe.references: object expected");
-                                    message.references[i] = $root.google.cloud.securitycenter.v2.Reference.fromObject(object.references[i]);
+                                    message.references[i] = $root.google.cloud.securitycenter.v2.Reference.fromObject(object.references[i], long + 1);
                                 }
                             }
                             return message;
@@ -116213,7 +120759,7 @@
                         function Folder(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -116288,9 +120834,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Folder.decode = function decode(reader, length, error) {
+                        Folder.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Folder();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -116306,7 +120856,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -116337,9 +120887,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Folder.verify = function verify(message) {
+                        Folder.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.resourceFolder != null && message.hasOwnProperty("resourceFolder"))
                                 if (!$util.isString(message.resourceFolder))
                                     return "resourceFolder: string expected";
@@ -116357,9 +120911,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Folder} Folder
                          */
-                        Folder.fromObject = function fromObject(object) {
+                        Folder.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Folder)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Folder();
                             if (object.resourceFolder != null)
                                 message.resourceFolder = String(object.resourceFolder);
@@ -116448,7 +121006,7 @@
                         function MuteConfig(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -116583,9 +121141,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        MuteConfig.decode = function decode(reader, length, error) {
+                        MuteConfig.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.MuteConfig();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -116605,11 +121167,11 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
@@ -116621,11 +121183,11 @@
                                         break;
                                     }
                                 case 9: {
-                                        message.expiryTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.expiryTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -116656,9 +121218,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        MuteConfig.verify = function verify(message) {
+                        MuteConfig.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -116669,12 +121235,12 @@
                                 if (!$util.isString(message.filter))
                                     return "filter: string expected";
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -116691,7 +121257,7 @@
                                     break;
                                 }
                             if (message.expiryTime != null && message.hasOwnProperty("expiryTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.expiryTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.expiryTime, long + 1);
                                 if (error)
                                     return "expiryTime." + error;
                             }
@@ -116706,9 +121272,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.MuteConfig} MuteConfig
                          */
-                        MuteConfig.fromObject = function fromObject(object) {
+                        MuteConfig.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.MuteConfig)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.MuteConfig();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -116719,12 +121289,12 @@
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.MuteConfig.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.MuteConfig.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.mostRecentEditor != null)
                                 message.mostRecentEditor = String(object.mostRecentEditor);
@@ -116751,7 +121321,7 @@
                             if (object.expiryTime != null) {
                                 if (typeof object.expiryTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.MuteConfig.expiryTime: object expected");
-                                message.expiryTime = $root.google.protobuf.Timestamp.fromObject(object.expiryTime);
+                                message.expiryTime = $root.google.protobuf.Timestamp.fromObject(object.expiryTime, long + 1);
                             }
                             return message;
                         };
@@ -116868,7 +121438,7 @@
                         function NotificationConfig(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -116997,9 +121567,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        NotificationConfig.decode = function decode(reader, length, error) {
+                        NotificationConfig.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.NotificationConfig();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -117023,15 +121597,15 @@
                                         break;
                                     }
                                 case 5: {
-                                        message.streamingConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig.decode(reader, reader.uint32());
+                                        message.streamingConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -117062,9 +121636,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        NotificationConfig.verify = function verify(message) {
+                        NotificationConfig.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
@@ -117081,13 +121659,13 @@
                             if (message.streamingConfig != null && message.hasOwnProperty("streamingConfig")) {
                                 properties.notifyConfig = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig.verify(message.streamingConfig);
+                                    var error = $root.google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig.verify(message.streamingConfig, long + 1);
                                     if (error)
                                         return "streamingConfig." + error;
                                 }
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -117102,9 +121680,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.NotificationConfig} NotificationConfig
                          */
-                        NotificationConfig.fromObject = function fromObject(object) {
+                        NotificationConfig.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.NotificationConfig)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.NotificationConfig();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -117117,12 +121699,12 @@
                             if (object.streamingConfig != null) {
                                 if (typeof object.streamingConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.NotificationConfig.streamingConfig: object expected");
-                                message.streamingConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig.fromObject(object.streamingConfig);
+                                message.streamingConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig.fromObject(object.streamingConfig, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.NotificationConfig.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             return message;
                         };
@@ -117211,7 +121793,7 @@
                             function StreamingConfig(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -117276,9 +121858,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            StreamingConfig.decode = function decode(reader, length, error) {
+                            StreamingConfig.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -117290,7 +121876,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -117321,9 +121907,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            StreamingConfig.verify = function verify(message) {
+                            StreamingConfig.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.filter != null && message.hasOwnProperty("filter"))
                                     if (!$util.isString(message.filter))
                                         return "filter: string expected";
@@ -117338,9 +121928,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig} StreamingConfig
                              */
-                            StreamingConfig.fromObject = function fromObject(object) {
+                            StreamingConfig.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.NotificationConfig.StreamingConfig();
                                 if (object.filter != null)
                                     message.filter = String(object.filter);
@@ -117421,7 +122015,7 @@
                         function NotificationMessage(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -117520,9 +122114,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        NotificationMessage.decode = function decode(reader, length, error) {
+                        NotificationMessage.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.NotificationMessage();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -117534,15 +122132,15 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.finding = $root.google.cloud.securitycenter.v2.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v2.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.resource = $root.google.cloud.securitycenter.v2.Resource.decode(reader, reader.uint32());
+                                        message.resource = $root.google.cloud.securitycenter.v2.Resource.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -117573,9 +122171,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        NotificationMessage.verify = function verify(message) {
+                        NotificationMessage.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.notificationConfigName != null && message.hasOwnProperty("notificationConfigName"))
                                 if (!$util.isString(message.notificationConfigName))
@@ -117583,13 +122185,13 @@
                             if (message.finding != null && message.hasOwnProperty("finding")) {
                                 properties.event = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v2.Finding.verify(message.finding);
+                                    var error = $root.google.cloud.securitycenter.v2.Finding.verify(message.finding, long + 1);
                                     if (error)
                                         return "finding." + error;
                                 }
                             }
                             if (message.resource != null && message.hasOwnProperty("resource")) {
-                                var error = $root.google.cloud.securitycenter.v2.Resource.verify(message.resource);
+                                var error = $root.google.cloud.securitycenter.v2.Resource.verify(message.resource, long + 1);
                                 if (error)
                                     return "resource." + error;
                             }
@@ -117604,21 +122206,25 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.NotificationMessage} NotificationMessage
                          */
-                        NotificationMessage.fromObject = function fromObject(object) {
+                        NotificationMessage.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.NotificationMessage)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.NotificationMessage();
                             if (object.notificationConfigName != null)
                                 message.notificationConfigName = String(object.notificationConfigName);
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.NotificationMessage.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v2.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v2.Finding.fromObject(object.finding, long + 1);
                             }
                             if (object.resource != null) {
                                 if (typeof object.resource !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.NotificationMessage.resource: object expected");
-                                message.resource = $root.google.cloud.securitycenter.v2.Resource.fromObject(object.resource);
+                                message.resource = $root.google.cloud.securitycenter.v2.Resource.fromObject(object.resource, long + 1);
                             }
                             return message;
                         };
@@ -117711,7 +122317,7 @@
                         function Resource(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -117890,9 +122496,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Resource.decode = function decode(reader, length, error) {
+                        Resource.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Resource();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -117924,19 +122534,19 @@
                                         break;
                                     }
                                 case 7: {
-                                        message.gcpMetadata = $root.google.cloud.securitycenter.v2.GcpMetadata.decode(reader, reader.uint32());
+                                        message.gcpMetadata = $root.google.cloud.securitycenter.v2.GcpMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
-                                        message.awsMetadata = $root.google.cloud.securitycenter.v2.AwsMetadata.decode(reader, reader.uint32());
+                                        message.awsMetadata = $root.google.cloud.securitycenter.v2.AwsMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
-                                        message.azureMetadata = $root.google.cloud.securitycenter.v2.AzureMetadata.decode(reader, reader.uint32());
+                                        message.azureMetadata = $root.google.cloud.securitycenter.v2.AzureMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
-                                        message.resourcePath = $root.google.cloud.securitycenter.v2.ResourcePath.decode(reader, reader.uint32());
+                                        message.resourcePath = $root.google.cloud.securitycenter.v2.ResourcePath.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 11: {
@@ -117944,7 +122554,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -117975,9 +122585,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Resource.verify = function verify(message) {
+                        Resource.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
@@ -118007,7 +122621,7 @@
                             if (message.gcpMetadata != null && message.hasOwnProperty("gcpMetadata")) {
                                 properties.cloudProviderMetadata = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v2.GcpMetadata.verify(message.gcpMetadata);
+                                    var error = $root.google.cloud.securitycenter.v2.GcpMetadata.verify(message.gcpMetadata, long + 1);
                                     if (error)
                                         return "gcpMetadata." + error;
                                 }
@@ -118017,7 +122631,7 @@
                                     return "cloudProviderMetadata: multiple values";
                                 properties.cloudProviderMetadata = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v2.AwsMetadata.verify(message.awsMetadata);
+                                    var error = $root.google.cloud.securitycenter.v2.AwsMetadata.verify(message.awsMetadata, long + 1);
                                     if (error)
                                         return "awsMetadata." + error;
                                 }
@@ -118027,13 +122641,13 @@
                                     return "cloudProviderMetadata: multiple values";
                                 properties.cloudProviderMetadata = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v2.AzureMetadata.verify(message.azureMetadata);
+                                    var error = $root.google.cloud.securitycenter.v2.AzureMetadata.verify(message.azureMetadata, long + 1);
                                     if (error)
                                         return "azureMetadata." + error;
                                 }
                             }
                             if (message.resourcePath != null && message.hasOwnProperty("resourcePath")) {
-                                var error = $root.google.cloud.securitycenter.v2.ResourcePath.verify(message.resourcePath);
+                                var error = $root.google.cloud.securitycenter.v2.ResourcePath.verify(message.resourcePath, long + 1);
                                 if (error)
                                     return "resourcePath." + error;
                             }
@@ -118051,9 +122665,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Resource} Resource
                          */
-                        Resource.fromObject = function fromObject(object) {
+                        Resource.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Resource)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Resource();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -118092,22 +122710,22 @@
                             if (object.gcpMetadata != null) {
                                 if (typeof object.gcpMetadata !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Resource.gcpMetadata: object expected");
-                                message.gcpMetadata = $root.google.cloud.securitycenter.v2.GcpMetadata.fromObject(object.gcpMetadata);
+                                message.gcpMetadata = $root.google.cloud.securitycenter.v2.GcpMetadata.fromObject(object.gcpMetadata, long + 1);
                             }
                             if (object.awsMetadata != null) {
                                 if (typeof object.awsMetadata !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Resource.awsMetadata: object expected");
-                                message.awsMetadata = $root.google.cloud.securitycenter.v2.AwsMetadata.fromObject(object.awsMetadata);
+                                message.awsMetadata = $root.google.cloud.securitycenter.v2.AwsMetadata.fromObject(object.awsMetadata, long + 1);
                             }
                             if (object.azureMetadata != null) {
                                 if (typeof object.azureMetadata !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Resource.azureMetadata: object expected");
-                                message.azureMetadata = $root.google.cloud.securitycenter.v2.AzureMetadata.fromObject(object.azureMetadata);
+                                message.azureMetadata = $root.google.cloud.securitycenter.v2.AzureMetadata.fromObject(object.azureMetadata, long + 1);
                             }
                             if (object.resourcePath != null) {
                                 if (typeof object.resourcePath !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Resource.resourcePath: object expected");
-                                message.resourcePath = $root.google.cloud.securitycenter.v2.ResourcePath.fromObject(object.resourcePath);
+                                message.resourcePath = $root.google.cloud.securitycenter.v2.ResourcePath.fromObject(object.resourcePath, long + 1);
                             }
                             if (object.resourcePathString != null)
                                 message.resourcePathString = String(object.resourcePathString);
@@ -118244,7 +122862,7 @@
                             this.folders = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -118360,9 +122978,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GcpMetadata.decode = function decode(reader, length, error) {
+                        GcpMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GcpMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -118388,7 +123010,7 @@
                                 case 5: {
                                         if (!(message.folders && message.folders.length))
                                             message.folders = [];
-                                        message.folders.push($root.google.cloud.securitycenter.v2.Folder.decode(reader, reader.uint32()));
+                                        message.folders.push($root.google.cloud.securitycenter.v2.Folder.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 6: {
@@ -118396,7 +123018,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -118427,9 +123049,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GcpMetadata.verify = function verify(message) {
+                        GcpMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.project != null && message.hasOwnProperty("project"))
                                 if (!$util.isString(message.project))
                                     return "project: string expected";
@@ -118446,7 +123072,7 @@
                                 if (!Array.isArray(message.folders))
                                     return "folders: array expected";
                                 for (var i = 0; i < message.folders.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Folder.verify(message.folders[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Folder.verify(message.folders[i], long + 1);
                                     if (error)
                                         return "folders." + error;
                                 }
@@ -118465,9 +123091,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GcpMetadata} GcpMetadata
                          */
-                        GcpMetadata.fromObject = function fromObject(object) {
+                        GcpMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GcpMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GcpMetadata();
                             if (object.project != null)
                                 message.project = String(object.project);
@@ -118484,7 +123114,7 @@
                                 for (var i = 0; i < object.folders.length; ++i) {
                                     if (typeof object.folders[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.GcpMetadata.folders: object expected");
-                                    message.folders[i] = $root.google.cloud.securitycenter.v2.Folder.fromObject(object.folders[i]);
+                                    message.folders[i] = $root.google.cloud.securitycenter.v2.Folder.fromObject(object.folders[i], long + 1);
                                 }
                             }
                             if (object.organization != null)
@@ -118584,7 +123214,7 @@
                             this.organizationalUnits = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -118670,9 +123300,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AwsMetadata.decode = function decode(reader, length, error) {
+                        AwsMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AwsMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -118680,21 +123314,21 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.organization = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization.decode(reader, reader.uint32());
+                                        message.organization = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
                                         if (!(message.organizationalUnits && message.organizationalUnits.length))
                                             message.organizationalUnits = [];
-                                        message.organizationalUnits.push($root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit.decode(reader, reader.uint32()));
+                                        message.organizationalUnits.push($root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
-                                        message.account = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsAccount.decode(reader, reader.uint32());
+                                        message.account = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsAccount.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -118725,11 +123359,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AwsMetadata.verify = function verify(message) {
+                        AwsMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.organization != null && message.hasOwnProperty("organization")) {
-                                var error = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization.verify(message.organization);
+                                var error = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization.verify(message.organization, long + 1);
                                 if (error)
                                     return "organization." + error;
                             }
@@ -118737,13 +123375,13 @@
                                 if (!Array.isArray(message.organizationalUnits))
                                     return "organizationalUnits: array expected";
                                 for (var i = 0; i < message.organizationalUnits.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit.verify(message.organizationalUnits[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit.verify(message.organizationalUnits[i], long + 1);
                                     if (error)
                                         return "organizationalUnits." + error;
                                 }
                             }
                             if (message.account != null && message.hasOwnProperty("account")) {
-                                var error = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsAccount.verify(message.account);
+                                var error = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsAccount.verify(message.account, long + 1);
                                 if (error)
                                     return "account." + error;
                             }
@@ -118758,14 +123396,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.AwsMetadata} AwsMetadata
                          */
-                        AwsMetadata.fromObject = function fromObject(object) {
+                        AwsMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.AwsMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.AwsMetadata();
                             if (object.organization != null) {
                                 if (typeof object.organization !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.AwsMetadata.organization: object expected");
-                                message.organization = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization.fromObject(object.organization);
+                                message.organization = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization.fromObject(object.organization, long + 1);
                             }
                             if (object.organizationalUnits) {
                                 if (!Array.isArray(object.organizationalUnits))
@@ -118774,13 +123416,13 @@
                                 for (var i = 0; i < object.organizationalUnits.length; ++i) {
                                     if (typeof object.organizationalUnits[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.AwsMetadata.organizationalUnits: object expected");
-                                    message.organizationalUnits[i] = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit.fromObject(object.organizationalUnits[i]);
+                                    message.organizationalUnits[i] = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit.fromObject(object.organizationalUnits[i], long + 1);
                                 }
                             }
                             if (object.account != null) {
                                 if (typeof object.account !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.AwsMetadata.account: object expected");
-                                message.account = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsAccount.fromObject(object.account);
+                                message.account = $root.google.cloud.securitycenter.v2.AwsMetadata.AwsAccount.fromObject(object.account, long + 1);
                             }
                             return message;
                         };
@@ -118862,7 +123504,7 @@
                             function AwsOrganization(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -118927,9 +123569,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AwsOrganization.decode = function decode(reader, length, error) {
+                            AwsOrganization.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -118941,7 +123587,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -118972,9 +123618,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AwsOrganization.verify = function verify(message) {
+                            AwsOrganization.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -118989,9 +123639,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization} AwsOrganization
                              */
-                            AwsOrganization.fromObject = function fromObject(object) {
+                            AwsOrganization.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganization();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -119068,7 +123722,7 @@
                             function AwsOrganizationalUnit(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -119143,9 +123797,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AwsOrganizationalUnit.decode = function decode(reader, length, error) {
+                            AwsOrganizationalUnit.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -119161,7 +123819,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -119192,9 +123850,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AwsOrganizationalUnit.verify = function verify(message) {
+                            AwsOrganizationalUnit.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -119212,9 +123874,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit} AwsOrganizationalUnit
                              */
-                            AwsOrganizationalUnit.fromObject = function fromObject(object) {
+                            AwsOrganizationalUnit.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.AwsMetadata.AwsOrganizationalUnit();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -119297,7 +123963,7 @@
                             function AwsAccount(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -119372,9 +124038,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AwsAccount.decode = function decode(reader, length, error) {
+                            AwsAccount.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AwsMetadata.AwsAccount();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -119390,7 +124060,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -119421,9 +124091,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AwsAccount.verify = function verify(message) {
+                            AwsAccount.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -119441,9 +124115,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.AwsMetadata.AwsAccount} AwsAccount
                              */
-                            AwsAccount.fromObject = function fromObject(object) {
+                            AwsAccount.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.AwsMetadata.AwsAccount)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.AwsMetadata.AwsAccount();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -119532,7 +124210,7 @@
                             this.managementGroups = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -119628,9 +124306,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AzureMetadata.decode = function decode(reader, length, error) {
+                        AzureMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AzureMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -119640,23 +124322,23 @@
                                 case 1: {
                                         if (!(message.managementGroups && message.managementGroups.length))
                                             message.managementGroups = [];
-                                        message.managementGroups.push($root.google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup.decode(reader, reader.uint32()));
+                                        message.managementGroups.push($root.google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
-                                        message.subscription = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription.decode(reader, reader.uint32());
+                                        message.subscription = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.resourceGroup = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup.decode(reader, reader.uint32());
+                                        message.resourceGroup = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
-                                        message.tenant = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureTenant.decode(reader, reader.uint32());
+                                        message.tenant = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureTenant.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -119687,30 +124369,34 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AzureMetadata.verify = function verify(message) {
+                        AzureMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.managementGroups != null && message.hasOwnProperty("managementGroups")) {
                                 if (!Array.isArray(message.managementGroups))
                                     return "managementGroups: array expected";
                                 for (var i = 0; i < message.managementGroups.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup.verify(message.managementGroups[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup.verify(message.managementGroups[i], long + 1);
                                     if (error)
                                         return "managementGroups." + error;
                                 }
                             }
                             if (message.subscription != null && message.hasOwnProperty("subscription")) {
-                                var error = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription.verify(message.subscription);
+                                var error = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription.verify(message.subscription, long + 1);
                                 if (error)
                                     return "subscription." + error;
                             }
                             if (message.resourceGroup != null && message.hasOwnProperty("resourceGroup")) {
-                                var error = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup.verify(message.resourceGroup);
+                                var error = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup.verify(message.resourceGroup, long + 1);
                                 if (error)
                                     return "resourceGroup." + error;
                             }
                             if (message.tenant != null && message.hasOwnProperty("tenant")) {
-                                var error = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureTenant.verify(message.tenant);
+                                var error = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureTenant.verify(message.tenant, long + 1);
                                 if (error)
                                     return "tenant." + error;
                             }
@@ -119725,9 +124411,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.AzureMetadata} AzureMetadata
                          */
-                        AzureMetadata.fromObject = function fromObject(object) {
+                        AzureMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.AzureMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.AzureMetadata();
                             if (object.managementGroups) {
                                 if (!Array.isArray(object.managementGroups))
@@ -119736,23 +124426,23 @@
                                 for (var i = 0; i < object.managementGroups.length; ++i) {
                                     if (typeof object.managementGroups[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.AzureMetadata.managementGroups: object expected");
-                                    message.managementGroups[i] = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup.fromObject(object.managementGroups[i]);
+                                    message.managementGroups[i] = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup.fromObject(object.managementGroups[i], long + 1);
                                 }
                             }
                             if (object.subscription != null) {
                                 if (typeof object.subscription !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.AzureMetadata.subscription: object expected");
-                                message.subscription = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription.fromObject(object.subscription);
+                                message.subscription = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription.fromObject(object.subscription, long + 1);
                             }
                             if (object.resourceGroup != null) {
                                 if (typeof object.resourceGroup !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.AzureMetadata.resourceGroup: object expected");
-                                message.resourceGroup = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup.fromObject(object.resourceGroup);
+                                message.resourceGroup = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup.fromObject(object.resourceGroup, long + 1);
                             }
                             if (object.tenant != null) {
                                 if (typeof object.tenant !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.AzureMetadata.tenant: object expected");
-                                message.tenant = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureTenant.fromObject(object.tenant);
+                                message.tenant = $root.google.cloud.securitycenter.v2.AzureMetadata.AzureTenant.fromObject(object.tenant, long + 1);
                             }
                             return message;
                         };
@@ -119838,7 +124528,7 @@
                             function AzureManagementGroup(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -119913,9 +124603,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AzureManagementGroup.decode = function decode(reader, length, error) {
+                            AzureManagementGroup.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -119931,7 +124625,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -119962,9 +124656,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AzureManagementGroup.verify = function verify(message) {
+                            AzureManagementGroup.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -119982,9 +124680,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup} AzureManagementGroup
                              */
-                            AzureManagementGroup.fromObject = function fromObject(object) {
+                            AzureManagementGroup.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.AzureMetadata.AzureManagementGroup();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -120067,7 +124769,7 @@
                             function AzureSubscription(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -120142,9 +124844,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AzureSubscription.decode = function decode(reader, length, error) {
+                            AzureSubscription.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -120160,7 +124866,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -120191,9 +124897,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AzureSubscription.verify = function verify(message) {
+                            AzureSubscription.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -120211,9 +124921,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription} AzureSubscription
                              */
-                            AzureSubscription.fromObject = function fromObject(object) {
+                            AzureSubscription.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.AzureMetadata.AzureSubscription();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -120296,7 +125010,7 @@
                             function AzureResourceGroup(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -120371,9 +125085,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AzureResourceGroup.decode = function decode(reader, length, error) {
+                            AzureResourceGroup.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -120389,7 +125107,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -120420,9 +125138,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AzureResourceGroup.verify = function verify(message) {
+                            AzureResourceGroup.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -120440,9 +125162,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup} AzureResourceGroup
                              */
-                            AzureResourceGroup.fromObject = function fromObject(object) {
+                            AzureResourceGroup.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.AzureMetadata.AzureResourceGroup();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -120525,7 +125251,7 @@
                             function AzureTenant(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -120600,9 +125326,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            AzureTenant.decode = function decode(reader, length, error) {
+                            AzureTenant.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.AzureMetadata.AzureTenant();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -120618,7 +125348,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -120649,9 +125379,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            AzureTenant.verify = function verify(message) {
+                            AzureTenant.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.id != null && message.hasOwnProperty("id"))
                                     if (!$util.isString(message.id))
                                         return "id: string expected";
@@ -120669,9 +125403,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.AzureMetadata.AzureTenant} AzureTenant
                              */
-                            AzureTenant.fromObject = function fromObject(object) {
+                            AzureTenant.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.AzureMetadata.AzureTenant)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.AzureMetadata.AzureTenant();
                                 if (object.id != null)
                                     message.id = String(object.id);
@@ -120757,7 +125495,7 @@
                             this.nodes = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -120823,9 +125561,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResourcePath.decode = function decode(reader, length, error) {
+                        ResourcePath.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ResourcePath();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -120835,11 +125577,11 @@
                                 case 1: {
                                         if (!(message.nodes && message.nodes.length))
                                             message.nodes = [];
-                                        message.nodes.push($root.google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode.decode(reader, reader.uint32()));
+                                        message.nodes.push($root.google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -120870,14 +125612,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResourcePath.verify = function verify(message) {
+                        ResourcePath.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.nodes != null && message.hasOwnProperty("nodes")) {
                                 if (!Array.isArray(message.nodes))
                                     return "nodes: array expected";
                                 for (var i = 0; i < message.nodes.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode.verify(message.nodes[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode.verify(message.nodes[i], long + 1);
                                     if (error)
                                         return "nodes." + error;
                                 }
@@ -120893,9 +125639,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ResourcePath} ResourcePath
                          */
-                        ResourcePath.fromObject = function fromObject(object) {
+                        ResourcePath.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ResourcePath)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ResourcePath();
                             if (object.nodes) {
                                 if (!Array.isArray(object.nodes))
@@ -120904,7 +125654,7 @@
                                 for (var i = 0; i < object.nodes.length; ++i) {
                                     if (typeof object.nodes[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ResourcePath.nodes: object expected");
-                                    message.nodes[i] = $root.google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode.fromObject(object.nodes[i]);
+                                    message.nodes[i] = $root.google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode.fromObject(object.nodes[i], long + 1);
                                 }
                             }
                             return message;
@@ -121011,7 +125761,7 @@
                             function ResourcePathNode(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -121096,9 +125846,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ResourcePathNode.decode = function decode(reader, length, error) {
+                            ResourcePathNode.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -121118,7 +125872,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -121149,9 +125903,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ResourcePathNode.verify = function verify(message) {
+                            ResourcePathNode.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.nodeType != null && message.hasOwnProperty("nodeType"))
                                     switch (message.nodeType) {
                                     default:
@@ -121185,9 +125943,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode} ResourcePathNode
                              */
-                            ResourcePathNode.fromObject = function fromObject(object) {
+                            ResourcePathNode.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.ResourcePath.ResourcePathNode();
                                 switch (object.nodeType) {
                                 default:
@@ -121335,7 +126097,7 @@
                             this.resourceLabelsSelector = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -121502,9 +126264,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResourceValueConfig.decode = function decode(reader, length, error) {
+                        ResourceValueConfig.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ResourceValueConfig(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -121549,10 +126315,12 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.resourceLabelsSelector, key);
                                         message.resourceLabelsSelector[key] = value;
                                         break;
                                     }
@@ -121561,11 +126329,11 @@
                                         break;
                                     }
                                 case 8: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 10: {
@@ -121573,11 +126341,11 @@
                                         break;
                                     }
                                 case 11: {
-                                        message.sensitiveDataProtectionMapping = $root.google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping.decode(reader, reader.uint32());
+                                        message.sensitiveDataProtectionMapping = $root.google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -121608,9 +126376,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResourceValueConfig.verify = function verify(message) {
+                        ResourceValueConfig.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -121650,12 +126422,12 @@
                                 if (!$util.isString(message.description))
                                     return "description: string expected";
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -121670,7 +126442,7 @@
                                     break;
                                 }
                             if (message.sensitiveDataProtectionMapping != null && message.hasOwnProperty("sensitiveDataProtectionMapping")) {
-                                var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping.verify(message.sensitiveDataProtectionMapping);
+                                var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping.verify(message.sensitiveDataProtectionMapping, long + 1);
                                 if (error)
                                     return "sensitiveDataProtectionMapping." + error;
                             }
@@ -121685,9 +126457,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ResourceValueConfig} ResourceValueConfig
                          */
-                        ResourceValueConfig.fromObject = function fromObject(object) {
+                        ResourceValueConfig.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ResourceValueConfig)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ResourceValueConfig();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -121734,20 +126510,23 @@
                                 if (typeof object.resourceLabelsSelector !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ResourceValueConfig.resourceLabelsSelector: object expected");
                                 message.resourceLabelsSelector = {};
-                                for (var keys = Object.keys(object.resourceLabelsSelector), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.resourceLabelsSelector), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.resourceLabelsSelector, keys[i]);
                                     message.resourceLabelsSelector[keys[i]] = String(object.resourceLabelsSelector[keys[i]]);
+                                }
                             }
                             if (object.description != null)
                                 message.description = String(object.description);
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ResourceValueConfig.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ResourceValueConfig.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             switch (object.cloudProvider) {
                             default:
@@ -121776,7 +126555,7 @@
                             if (object.sensitiveDataProtectionMapping != null) {
                                 if (typeof object.sensitiveDataProtectionMapping !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ResourceValueConfig.sensitiveDataProtectionMapping: object expected");
-                                message.sensitiveDataProtectionMapping = $root.google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping.fromObject(object.sensitiveDataProtectionMapping);
+                                message.sensitiveDataProtectionMapping = $root.google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping.fromObject(object.sensitiveDataProtectionMapping, long + 1);
                             }
                             return message;
                         };
@@ -121825,8 +126604,11 @@
                             var keys2;
                             if (message.resourceLabelsSelector && (keys2 = Object.keys(message.resourceLabelsSelector)).length) {
                                 object.resourceLabelsSelector = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.resourceLabelsSelector, keys2[j]);
                                     object.resourceLabelsSelector[keys2[j]] = message.resourceLabelsSelector[keys2[j]];
+                                }
                             }
                             if (message.description != null && message.hasOwnProperty("description"))
                                 object.description = message.description;
@@ -121888,7 +126670,7 @@
                             function SensitiveDataProtectionMapping(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -121963,9 +126745,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            SensitiveDataProtectionMapping.decode = function decode(reader, length, error) {
+                            SensitiveDataProtectionMapping.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -121981,7 +126767,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -122012,9 +126798,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            SensitiveDataProtectionMapping.verify = function verify(message) {
+                            SensitiveDataProtectionMapping.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.highSensitivityMapping != null && message.hasOwnProperty("highSensitivityMapping"))
                                     switch (message.highSensitivityMapping) {
                                     default:
@@ -122048,9 +126838,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping} SensitiveDataProtectionMapping
                              */
-                            SensitiveDataProtectionMapping.fromObject = function fromObject(object) {
+                            SensitiveDataProtectionMapping.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.ResourceValueConfig.SensitiveDataProtectionMapping();
                                 switch (object.highSensitivityMapping) {
                                 default:
@@ -123564,7 +128358,7 @@
                             this.requests = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -123640,9 +128434,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BatchCreateResourceValueConfigsRequest.decode = function decode(reader, length, error) {
+                        BatchCreateResourceValueConfigsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -123656,11 +128454,11 @@
                                 case 2: {
                                         if (!(message.requests && message.requests.length))
                                             message.requests = [];
-                                        message.requests.push($root.google.cloud.securitycenter.v2.CreateResourceValueConfigRequest.decode(reader, reader.uint32()));
+                                        message.requests.push($root.google.cloud.securitycenter.v2.CreateResourceValueConfigRequest.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -123691,9 +128489,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BatchCreateResourceValueConfigsRequest.verify = function verify(message) {
+                        BatchCreateResourceValueConfigsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -123701,7 +128503,7 @@
                                 if (!Array.isArray(message.requests))
                                     return "requests: array expected";
                                 for (var i = 0; i < message.requests.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.CreateResourceValueConfigRequest.verify(message.requests[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.CreateResourceValueConfigRequest.verify(message.requests[i], long + 1);
                                     if (error)
                                         return "requests." + error;
                                 }
@@ -123717,9 +128519,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsRequest} BatchCreateResourceValueConfigsRequest
                          */
-                        BatchCreateResourceValueConfigsRequest.fromObject = function fromObject(object) {
+                        BatchCreateResourceValueConfigsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -123730,7 +128536,7 @@
                                 for (var i = 0; i < object.requests.length; ++i) {
                                     if (typeof object.requests[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsRequest.requests: object expected");
-                                    message.requests[i] = $root.google.cloud.securitycenter.v2.CreateResourceValueConfigRequest.fromObject(object.requests[i]);
+                                    message.requests[i] = $root.google.cloud.securitycenter.v2.CreateResourceValueConfigRequest.fromObject(object.requests[i], long + 1);
                                 }
                             }
                             return message;
@@ -123813,7 +128619,7 @@
                             this.resourceValueConfigs = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -123879,9 +128685,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BatchCreateResourceValueConfigsResponse.decode = function decode(reader, length, error) {
+                        BatchCreateResourceValueConfigsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -123891,11 +128701,11 @@
                                 case 1: {
                                         if (!(message.resourceValueConfigs && message.resourceValueConfigs.length))
                                             message.resourceValueConfigs = [];
-                                        message.resourceValueConfigs.push($root.google.cloud.securitycenter.v2.ResourceValueConfig.decode(reader, reader.uint32()));
+                                        message.resourceValueConfigs.push($root.google.cloud.securitycenter.v2.ResourceValueConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -123926,14 +128736,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BatchCreateResourceValueConfigsResponse.verify = function verify(message) {
+                        BatchCreateResourceValueConfigsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.resourceValueConfigs != null && message.hasOwnProperty("resourceValueConfigs")) {
                                 if (!Array.isArray(message.resourceValueConfigs))
                                     return "resourceValueConfigs: array expected";
                                 for (var i = 0; i < message.resourceValueConfigs.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.verify(message.resourceValueConfigs[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.verify(message.resourceValueConfigs[i], long + 1);
                                     if (error)
                                         return "resourceValueConfigs." + error;
                                 }
@@ -123949,9 +128763,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsResponse} BatchCreateResourceValueConfigsResponse
                          */
-                        BatchCreateResourceValueConfigsResponse.fromObject = function fromObject(object) {
+                        BatchCreateResourceValueConfigsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsResponse();
                             if (object.resourceValueConfigs) {
                                 if (!Array.isArray(object.resourceValueConfigs))
@@ -123960,7 +128778,7 @@
                                 for (var i = 0; i < object.resourceValueConfigs.length; ++i) {
                                     if (typeof object.resourceValueConfigs[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.BatchCreateResourceValueConfigsResponse.resourceValueConfigs: object expected");
-                                    message.resourceValueConfigs[i] = $root.google.cloud.securitycenter.v2.ResourceValueConfig.fromObject(object.resourceValueConfigs[i]);
+                                    message.resourceValueConfigs[i] = $root.google.cloud.securitycenter.v2.ResourceValueConfig.fromObject(object.resourceValueConfigs[i], long + 1);
                                 }
                             }
                             return message;
@@ -124040,7 +128858,7 @@
                         function BulkMuteFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -124125,9 +128943,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BulkMuteFindingsRequest.decode = function decode(reader, length, error) {
+                        BulkMuteFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.BulkMuteFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -124147,7 +128969,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -124178,9 +129000,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BulkMuteFindingsRequest.verify = function verify(message) {
+                        BulkMuteFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -124207,9 +129033,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.BulkMuteFindingsRequest} BulkMuteFindingsRequest
                          */
-                        BulkMuteFindingsRequest.fromObject = function fromObject(object) {
+                        BulkMuteFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.BulkMuteFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.BulkMuteFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -124329,7 +129159,7 @@
                         function BulkMuteFindingsResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -124384,9 +129214,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BulkMuteFindingsResponse.decode = function decode(reader, length, error) {
+                        BulkMuteFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.BulkMuteFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -124394,7 +129228,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -124425,9 +129259,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BulkMuteFindingsResponse.verify = function verify(message) {
+                        BulkMuteFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -124439,9 +129277,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.BulkMuteFindingsResponse} BulkMuteFindingsResponse
                          */
-                        BulkMuteFindingsResponse.fromObject = function fromObject(object) {
+                        BulkMuteFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.BulkMuteFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.securitycenter.v2.BulkMuteFindingsResponse();
                         };
     
@@ -124509,7 +129351,7 @@
                         function CreateBigQueryExportRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -124594,9 +129436,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateBigQueryExportRequest.decode = function decode(reader, length, error) {
+                        CreateBigQueryExportRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CreateBigQueryExportRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -124608,7 +129454,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.bigQueryExport = $root.google.cloud.securitycenter.v2.BigQueryExport.decode(reader, reader.uint32());
+                                        message.bigQueryExport = $root.google.cloud.securitycenter.v2.BigQueryExport.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -124616,7 +129462,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -124647,14 +129493,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateBigQueryExportRequest.verify = function verify(message) {
+                        CreateBigQueryExportRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.bigQueryExport != null && message.hasOwnProperty("bigQueryExport")) {
-                                var error = $root.google.cloud.securitycenter.v2.BigQueryExport.verify(message.bigQueryExport);
+                                var error = $root.google.cloud.securitycenter.v2.BigQueryExport.verify(message.bigQueryExport, long + 1);
                                 if (error)
                                     return "bigQueryExport." + error;
                             }
@@ -124672,16 +129522,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CreateBigQueryExportRequest} CreateBigQueryExportRequest
                          */
-                        CreateBigQueryExportRequest.fromObject = function fromObject(object) {
+                        CreateBigQueryExportRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CreateBigQueryExportRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CreateBigQueryExportRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.bigQueryExport != null) {
                                 if (typeof object.bigQueryExport !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CreateBigQueryExportRequest.bigQueryExport: object expected");
-                                message.bigQueryExport = $root.google.cloud.securitycenter.v2.BigQueryExport.fromObject(object.bigQueryExport);
+                                message.bigQueryExport = $root.google.cloud.securitycenter.v2.BigQueryExport.fromObject(object.bigQueryExport, long + 1);
                             }
                             if (object.bigQueryExportId != null)
                                 message.bigQueryExportId = String(object.bigQueryExportId);
@@ -124766,7 +129620,7 @@
                         function CreateFindingRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -124851,9 +129705,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateFindingRequest.decode = function decode(reader, length, error) {
+                        CreateFindingRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CreateFindingRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -124869,11 +129727,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.finding = $root.google.cloud.securitycenter.v2.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v2.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -124904,9 +129762,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateFindingRequest.verify = function verify(message) {
+                        CreateFindingRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -124914,7 +129776,7 @@
                                 if (!$util.isString(message.findingId))
                                     return "findingId: string expected";
                             if (message.finding != null && message.hasOwnProperty("finding")) {
-                                var error = $root.google.cloud.securitycenter.v2.Finding.verify(message.finding);
+                                var error = $root.google.cloud.securitycenter.v2.Finding.verify(message.finding, long + 1);
                                 if (error)
                                     return "finding." + error;
                             }
@@ -124929,9 +129791,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CreateFindingRequest} CreateFindingRequest
                          */
-                        CreateFindingRequest.fromObject = function fromObject(object) {
+                        CreateFindingRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CreateFindingRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CreateFindingRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -124940,7 +129806,7 @@
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CreateFindingRequest.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v2.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v2.Finding.fromObject(object.finding, long + 1);
                             }
                             return message;
                         };
@@ -125023,7 +129889,7 @@
                         function CreateMuteConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -125108,9 +129974,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateMuteConfigRequest.decode = function decode(reader, length, error) {
+                        CreateMuteConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CreateMuteConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -125122,7 +129992,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.muteConfig = $root.google.cloud.securitycenter.v2.MuteConfig.decode(reader, reader.uint32());
+                                        message.muteConfig = $root.google.cloud.securitycenter.v2.MuteConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -125130,7 +130000,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -125161,14 +130031,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateMuteConfigRequest.verify = function verify(message) {
+                        CreateMuteConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.muteConfig != null && message.hasOwnProperty("muteConfig")) {
-                                var error = $root.google.cloud.securitycenter.v2.MuteConfig.verify(message.muteConfig);
+                                var error = $root.google.cloud.securitycenter.v2.MuteConfig.verify(message.muteConfig, long + 1);
                                 if (error)
                                     return "muteConfig." + error;
                             }
@@ -125186,16 +130060,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CreateMuteConfigRequest} CreateMuteConfigRequest
                          */
-                        CreateMuteConfigRequest.fromObject = function fromObject(object) {
+                        CreateMuteConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CreateMuteConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CreateMuteConfigRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.muteConfig != null) {
                                 if (typeof object.muteConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CreateMuteConfigRequest.muteConfig: object expected");
-                                message.muteConfig = $root.google.cloud.securitycenter.v2.MuteConfig.fromObject(object.muteConfig);
+                                message.muteConfig = $root.google.cloud.securitycenter.v2.MuteConfig.fromObject(object.muteConfig, long + 1);
                             }
                             if (object.muteConfigId != null)
                                 message.muteConfigId = String(object.muteConfigId);
@@ -125280,7 +130158,7 @@
                         function CreateNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -125365,9 +130243,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        CreateNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CreateNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -125383,11 +130265,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.notificationConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.decode(reader, reader.uint32());
+                                        message.notificationConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -125418,9 +130300,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateNotificationConfigRequest.verify = function verify(message) {
+                        CreateNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -125428,7 +130314,7 @@
                                 if (!$util.isString(message.configId))
                                     return "configId: string expected";
                             if (message.notificationConfig != null && message.hasOwnProperty("notificationConfig")) {
-                                var error = $root.google.cloud.securitycenter.v2.NotificationConfig.verify(message.notificationConfig);
+                                var error = $root.google.cloud.securitycenter.v2.NotificationConfig.verify(message.notificationConfig, long + 1);
                                 if (error)
                                     return "notificationConfig." + error;
                             }
@@ -125443,9 +130329,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CreateNotificationConfigRequest} CreateNotificationConfigRequest
                          */
-                        CreateNotificationConfigRequest.fromObject = function fromObject(object) {
+                        CreateNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CreateNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CreateNotificationConfigRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -125454,7 +130344,7 @@
                             if (object.notificationConfig != null) {
                                 if (typeof object.notificationConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CreateNotificationConfigRequest.notificationConfig: object expected");
-                                message.notificationConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.fromObject(object.notificationConfig);
+                                message.notificationConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.fromObject(object.notificationConfig, long + 1);
                             }
                             return message;
                         };
@@ -125536,7 +130426,7 @@
                         function CreateResourceValueConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -125611,9 +130501,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateResourceValueConfigRequest.decode = function decode(reader, length, error) {
+                        CreateResourceValueConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CreateResourceValueConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -125625,11 +130519,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.resourceValueConfig = $root.google.cloud.securitycenter.v2.ResourceValueConfig.decode(reader, reader.uint32());
+                                        message.resourceValueConfig = $root.google.cloud.securitycenter.v2.ResourceValueConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -125660,14 +130554,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateResourceValueConfigRequest.verify = function verify(message) {
+                        CreateResourceValueConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.resourceValueConfig != null && message.hasOwnProperty("resourceValueConfig")) {
-                                var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.verify(message.resourceValueConfig);
+                                var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.verify(message.resourceValueConfig, long + 1);
                                 if (error)
                                     return "resourceValueConfig." + error;
                             }
@@ -125682,16 +130580,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CreateResourceValueConfigRequest} CreateResourceValueConfigRequest
                          */
-                        CreateResourceValueConfigRequest.fromObject = function fromObject(object) {
+                        CreateResourceValueConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CreateResourceValueConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CreateResourceValueConfigRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.resourceValueConfig != null) {
                                 if (typeof object.resourceValueConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CreateResourceValueConfigRequest.resourceValueConfig: object expected");
-                                message.resourceValueConfig = $root.google.cloud.securitycenter.v2.ResourceValueConfig.fromObject(object.resourceValueConfig);
+                                message.resourceValueConfig = $root.google.cloud.securitycenter.v2.ResourceValueConfig.fromObject(object.resourceValueConfig, long + 1);
                             }
                             return message;
                         };
@@ -125770,7 +130672,7 @@
                         function CreateSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -125845,9 +130747,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateSourceRequest.decode = function decode(reader, length, error) {
+                        CreateSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.CreateSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -125859,11 +130765,11 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.source = $root.google.cloud.securitycenter.v2.Source.decode(reader, reader.uint32());
+                                        message.source = $root.google.cloud.securitycenter.v2.Source.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -125894,14 +130800,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateSourceRequest.verify = function verify(message) {
+                        CreateSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.source != null && message.hasOwnProperty("source")) {
-                                var error = $root.google.cloud.securitycenter.v2.Source.verify(message.source);
+                                var error = $root.google.cloud.securitycenter.v2.Source.verify(message.source, long + 1);
                                 if (error)
                                     return "source." + error;
                             }
@@ -125916,16 +130826,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.CreateSourceRequest} CreateSourceRequest
                          */
-                        CreateSourceRequest.fromObject = function fromObject(object) {
+                        CreateSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.CreateSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.CreateSourceRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.source != null) {
                                 if (typeof object.source !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.CreateSourceRequest.source: object expected");
-                                message.source = $root.google.cloud.securitycenter.v2.Source.fromObject(object.source);
+                                message.source = $root.google.cloud.securitycenter.v2.Source.fromObject(object.source, long + 1);
                             }
                             return message;
                         };
@@ -126003,7 +130917,7 @@
                         function DeleteBigQueryExportRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -126068,9 +130982,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteBigQueryExportRequest.decode = function decode(reader, length, error) {
+                        DeleteBigQueryExportRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.DeleteBigQueryExportRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -126082,7 +131000,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -126113,9 +131031,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteBigQueryExportRequest.verify = function verify(message) {
+                        DeleteBigQueryExportRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -126130,9 +131052,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.DeleteBigQueryExportRequest} DeleteBigQueryExportRequest
                          */
-                        DeleteBigQueryExportRequest.fromObject = function fromObject(object) {
+                        DeleteBigQueryExportRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.DeleteBigQueryExportRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.DeleteBigQueryExportRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -126208,7 +131134,7 @@
                         function DeleteMuteConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -126273,9 +131199,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteMuteConfigRequest.decode = function decode(reader, length, error) {
+                        DeleteMuteConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.DeleteMuteConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -126287,7 +131217,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -126318,9 +131248,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteMuteConfigRequest.verify = function verify(message) {
+                        DeleteMuteConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -126335,9 +131269,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.DeleteMuteConfigRequest} DeleteMuteConfigRequest
                          */
-                        DeleteMuteConfigRequest.fromObject = function fromObject(object) {
+                        DeleteMuteConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.DeleteMuteConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.DeleteMuteConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -126413,7 +131351,7 @@
                         function DeleteNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -126478,9 +131416,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        DeleteNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.DeleteNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -126492,7 +131434,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -126523,9 +131465,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteNotificationConfigRequest.verify = function verify(message) {
+                        DeleteNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -126540,9 +131486,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.DeleteNotificationConfigRequest} DeleteNotificationConfigRequest
                          */
-                        DeleteNotificationConfigRequest.fromObject = function fromObject(object) {
+                        DeleteNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.DeleteNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.DeleteNotificationConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -126618,7 +131568,7 @@
                         function DeleteResourceValueConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -126683,9 +131633,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteResourceValueConfigRequest.decode = function decode(reader, length, error) {
+                        DeleteResourceValueConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.DeleteResourceValueConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -126697,7 +131651,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -126728,9 +131682,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteResourceValueConfigRequest.verify = function verify(message) {
+                        DeleteResourceValueConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -126745,9 +131703,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.DeleteResourceValueConfigRequest} DeleteResourceValueConfigRequest
                          */
-                        DeleteResourceValueConfigRequest.fromObject = function fromObject(object) {
+                        DeleteResourceValueConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.DeleteResourceValueConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.DeleteResourceValueConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -126823,7 +131785,7 @@
                         function BigQueryDestination(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -126888,9 +131850,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        BigQueryDestination.decode = function decode(reader, length, error) {
+                        BigQueryDestination.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.BigQueryDestination();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -126902,7 +131868,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -126933,9 +131899,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        BigQueryDestination.verify = function verify(message) {
+                        BigQueryDestination.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.dataset != null && message.hasOwnProperty("dataset"))
                                 if (!$util.isString(message.dataset))
                                     return "dataset: string expected";
@@ -126950,9 +131920,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.BigQueryDestination} BigQueryDestination
                          */
-                        BigQueryDestination.fromObject = function fromObject(object) {
+                        BigQueryDestination.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.BigQueryDestination)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.BigQueryDestination();
                             if (object.dataset != null)
                                 message.dataset = String(object.dataset);
@@ -127029,7 +132003,7 @@
                         function ExportFindingsMetadata(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -127118,9 +132092,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ExportFindingsMetadata.decode = function decode(reader, length, error) {
+                        ExportFindingsMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ExportFindingsMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -127128,15 +132106,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.exportStartTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.exportStartTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.bigQueryDestination = $root.google.cloud.securitycenter.v2.BigQueryDestination.decode(reader, reader.uint32());
+                                        message.bigQueryDestination = $root.google.cloud.securitycenter.v2.BigQueryDestination.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -127167,19 +132145,23 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ExportFindingsMetadata.verify = function verify(message) {
+                        ExportFindingsMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             var properties = {};
                             if (message.exportStartTime != null && message.hasOwnProperty("exportStartTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.exportStartTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.exportStartTime, long + 1);
                                 if (error)
                                     return "exportStartTime." + error;
                             }
                             if (message.bigQueryDestination != null && message.hasOwnProperty("bigQueryDestination")) {
                                 properties.destination = 1;
                                 {
-                                    var error = $root.google.cloud.securitycenter.v2.BigQueryDestination.verify(message.bigQueryDestination);
+                                    var error = $root.google.cloud.securitycenter.v2.BigQueryDestination.verify(message.bigQueryDestination, long + 1);
                                     if (error)
                                         return "bigQueryDestination." + error;
                                 }
@@ -127195,19 +132177,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ExportFindingsMetadata} ExportFindingsMetadata
                          */
-                        ExportFindingsMetadata.fromObject = function fromObject(object) {
+                        ExportFindingsMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ExportFindingsMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ExportFindingsMetadata();
                             if (object.exportStartTime != null) {
                                 if (typeof object.exportStartTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ExportFindingsMetadata.exportStartTime: object expected");
-                                message.exportStartTime = $root.google.protobuf.Timestamp.fromObject(object.exportStartTime);
+                                message.exportStartTime = $root.google.protobuf.Timestamp.fromObject(object.exportStartTime, long + 1);
                             }
                             if (object.bigQueryDestination != null) {
                                 if (typeof object.bigQueryDestination !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ExportFindingsMetadata.bigQueryDestination: object expected");
-                                message.bigQueryDestination = $root.google.cloud.securitycenter.v2.BigQueryDestination.fromObject(object.bigQueryDestination);
+                                message.bigQueryDestination = $root.google.cloud.securitycenter.v2.BigQueryDestination.fromObject(object.bigQueryDestination, long + 1);
                             }
                             return message;
                         };
@@ -127285,7 +132271,7 @@
                         function ExportFindingsResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -127340,9 +132326,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ExportFindingsResponse.decode = function decode(reader, length, error) {
+                        ExportFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ExportFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -127350,7 +132340,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -127381,9 +132371,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ExportFindingsResponse.verify = function verify(message) {
+                        ExportFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -127395,9 +132389,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ExportFindingsResponse} ExportFindingsResponse
                          */
-                        ExportFindingsResponse.fromObject = function fromObject(object) {
+                        ExportFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ExportFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.securitycenter.v2.ExportFindingsResponse();
                         };
     
@@ -127463,7 +132461,7 @@
                         function GetBigQueryExportRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -127528,9 +132526,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetBigQueryExportRequest.decode = function decode(reader, length, error) {
+                        GetBigQueryExportRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GetBigQueryExportRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -127542,7 +132544,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -127573,9 +132575,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetBigQueryExportRequest.verify = function verify(message) {
+                        GetBigQueryExportRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -127590,9 +132596,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GetBigQueryExportRequest} GetBigQueryExportRequest
                          */
-                        GetBigQueryExportRequest.fromObject = function fromObject(object) {
+                        GetBigQueryExportRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GetBigQueryExportRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GetBigQueryExportRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -127668,7 +132678,7 @@
                         function GetMuteConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -127733,9 +132743,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetMuteConfigRequest.decode = function decode(reader, length, error) {
+                        GetMuteConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GetMuteConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -127747,7 +132761,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -127778,9 +132792,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetMuteConfigRequest.verify = function verify(message) {
+                        GetMuteConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -127795,9 +132813,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GetMuteConfigRequest} GetMuteConfigRequest
                          */
-                        GetMuteConfigRequest.fromObject = function fromObject(object) {
+                        GetMuteConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GetMuteConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GetMuteConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -127873,7 +132895,7 @@
                         function GetNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -127938,9 +132960,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        GetNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GetNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -127952,7 +132978,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -127983,9 +133009,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetNotificationConfigRequest.verify = function verify(message) {
+                        GetNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -128000,9 +133030,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GetNotificationConfigRequest} GetNotificationConfigRequest
                          */
-                        GetNotificationConfigRequest.fromObject = function fromObject(object) {
+                        GetNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GetNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GetNotificationConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -128078,7 +133112,7 @@
                         function GetResourceValueConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -128143,9 +133177,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetResourceValueConfigRequest.decode = function decode(reader, length, error) {
+                        GetResourceValueConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GetResourceValueConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -128157,7 +133195,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -128188,9 +133226,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetResourceValueConfigRequest.verify = function verify(message) {
+                        GetResourceValueConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -128205,9 +133247,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GetResourceValueConfigRequest} GetResourceValueConfigRequest
                          */
-                        GetResourceValueConfigRequest.fromObject = function fromObject(object) {
+                        GetResourceValueConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GetResourceValueConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GetResourceValueConfigRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -128283,7 +133329,7 @@
                         function GetSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -128348,9 +133394,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetSourceRequest.decode = function decode(reader, length, error) {
+                        GetSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GetSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -128362,7 +133412,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -128393,9 +133443,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetSourceRequest.verify = function verify(message) {
+                        GetSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -128410,9 +133464,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GetSourceRequest} GetSourceRequest
                          */
-                        GetSourceRequest.fromObject = function fromObject(object) {
+                        GetSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GetSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GetSourceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -128492,7 +133550,7 @@
                         function GroupFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -128597,9 +133655,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupFindingsRequest.decode = function decode(reader, length, error) {
+                        GroupFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GroupFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -128627,7 +133689,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -128658,9 +133720,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupFindingsRequest.verify = function verify(message) {
+                        GroupFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -128687,9 +133753,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GroupFindingsRequest} GroupFindingsRequest
                          */
-                        GroupFindingsRequest.fromObject = function fromObject(object) {
+                        GroupFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GroupFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GroupFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -128789,7 +133859,7 @@
                             this.groupByResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -128875,9 +133945,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupFindingsResponse.decode = function decode(reader, length, error) {
+                        GroupFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GroupFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -128887,7 +133961,7 @@
                                 case 1: {
                                         if (!(message.groupByResults && message.groupByResults.length))
                                             message.groupByResults = [];
-                                        message.groupByResults.push($root.google.cloud.securitycenter.v2.GroupResult.decode(reader, reader.uint32()));
+                                        message.groupByResults.push($root.google.cloud.securitycenter.v2.GroupResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
@@ -128899,7 +133973,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -128930,14 +134004,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupFindingsResponse.verify = function verify(message) {
+                        GroupFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.groupByResults != null && message.hasOwnProperty("groupByResults")) {
                                 if (!Array.isArray(message.groupByResults))
                                     return "groupByResults: array expected";
                                 for (var i = 0; i < message.groupByResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.GroupResult.verify(message.groupByResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.GroupResult.verify(message.groupByResults[i], long + 1);
                                     if (error)
                                         return "groupByResults." + error;
                                 }
@@ -128959,9 +134037,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GroupFindingsResponse} GroupFindingsResponse
                          */
-                        GroupFindingsResponse.fromObject = function fromObject(object) {
+                        GroupFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GroupFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GroupFindingsResponse();
                             if (object.groupByResults) {
                                 if (!Array.isArray(object.groupByResults))
@@ -128970,7 +134052,7 @@
                                 for (var i = 0; i < object.groupByResults.length; ++i) {
                                     if (typeof object.groupByResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.GroupFindingsResponse.groupByResults: object expected");
-                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v2.GroupResult.fromObject(object.groupByResults[i]);
+                                    message.groupByResults[i] = $root.google.cloud.securitycenter.v2.GroupResult.fromObject(object.groupByResults[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -129062,7 +134144,7 @@
                             this.properties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -129140,9 +134222,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GroupResult.decode = function decode(reader, length, error) {
+                        GroupResult.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GroupResult(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -129162,13 +134248,15 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.properties, key);
                                         message.properties[key] = value;
                                         break;
                                     }
@@ -129177,7 +134265,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -129208,15 +134296,19 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GroupResult.verify = function verify(message) {
+                        GroupResult.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.properties != null && message.hasOwnProperty("properties")) {
                                 if (!$util.isObject(message.properties))
                                     return "properties: object expected";
                                 var key = Object.keys(message.properties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.properties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.properties[key[i]], long + 1);
                                     if (error)
                                         return "properties." + error;
                                 }
@@ -129235,18 +134327,24 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GroupResult} GroupResult
                          */
-                        GroupResult.fromObject = function fromObject(object) {
+                        GroupResult.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GroupResult)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GroupResult();
                             if (object.properties) {
                                 if (typeof object.properties !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.GroupResult.properties: object expected");
                                 message.properties = {};
                                 for (var keys = Object.keys(object.properties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.properties, keys[i]);
                                     if (typeof object.properties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.GroupResult.properties: object expected");
-                                    message.properties[keys[i]] = $root.google.protobuf.Value.fromObject(object.properties[keys[i]]);
+                                    message.properties[keys[i]] = $root.google.protobuf.Value.fromObject(object.properties[keys[i]], long + 1);
                                 }
                             }
                             if (object.count != null)
@@ -129285,8 +134383,11 @@
                             var keys2;
                             if (message.properties && (keys2 = Object.keys(message.properties)).length) {
                                 object.properties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.properties, keys2[j]);
                                     object.properties[keys2[j]] = $root.google.protobuf.Value.toObject(message.properties[keys2[j]], options);
+                                }
                             }
                             if (message.count != null && message.hasOwnProperty("count"))
                                 if (typeof message.count === "number")
@@ -129348,7 +134449,7 @@
                         function ListAttackPathsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -129443,9 +134544,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAttackPathsRequest.decode = function decode(reader, length, error) {
+                        ListAttackPathsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListAttackPathsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -129469,7 +134574,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -129500,9 +134605,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAttackPathsRequest.verify = function verify(message) {
+                        ListAttackPathsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -129526,9 +134635,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListAttackPathsRequest} ListAttackPathsRequest
                          */
-                        ListAttackPathsRequest.fromObject = function fromObject(object) {
+                        ListAttackPathsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListAttackPathsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListAttackPathsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -129622,7 +134735,7 @@
                             this.attackPaths = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -129698,9 +134811,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListAttackPathsResponse.decode = function decode(reader, length, error) {
+                        ListAttackPathsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListAttackPathsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -129710,7 +134827,7 @@
                                 case 1: {
                                         if (!(message.attackPaths && message.attackPaths.length))
                                             message.attackPaths = [];
-                                        message.attackPaths.push($root.google.cloud.securitycenter.v2.AttackPath.decode(reader, reader.uint32()));
+                                        message.attackPaths.push($root.google.cloud.securitycenter.v2.AttackPath.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -129718,7 +134835,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -129749,14 +134866,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListAttackPathsResponse.verify = function verify(message) {
+                        ListAttackPathsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.attackPaths != null && message.hasOwnProperty("attackPaths")) {
                                 if (!Array.isArray(message.attackPaths))
                                     return "attackPaths: array expected";
                                 for (var i = 0; i < message.attackPaths.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.AttackPath.verify(message.attackPaths[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.AttackPath.verify(message.attackPaths[i], long + 1);
                                     if (error)
                                         return "attackPaths." + error;
                                 }
@@ -129775,9 +134896,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListAttackPathsResponse} ListAttackPathsResponse
                          */
-                        ListAttackPathsResponse.fromObject = function fromObject(object) {
+                        ListAttackPathsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListAttackPathsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListAttackPathsResponse();
                             if (object.attackPaths) {
                                 if (!Array.isArray(object.attackPaths))
@@ -129786,7 +134911,7 @@
                                 for (var i = 0; i < object.attackPaths.length; ++i) {
                                     if (typeof object.attackPaths[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListAttackPathsResponse.attackPaths: object expected");
-                                    message.attackPaths[i] = $root.google.cloud.securitycenter.v2.AttackPath.fromObject(object.attackPaths[i]);
+                                    message.attackPaths[i] = $root.google.cloud.securitycenter.v2.AttackPath.fromObject(object.attackPaths[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -129870,7 +134995,7 @@
                         function GetSimulationRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -129935,9 +135060,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetSimulationRequest.decode = function decode(reader, length, error) {
+                        GetSimulationRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GetSimulationRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -129949,7 +135078,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -129980,9 +135109,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetSimulationRequest.verify = function verify(message) {
+                        GetSimulationRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -129997,9 +135130,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GetSimulationRequest} GetSimulationRequest
                          */
-                        GetSimulationRequest.fromObject = function fromObject(object) {
+                        GetSimulationRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GetSimulationRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GetSimulationRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -130075,7 +135212,7 @@
                         function GetValuedResourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -130140,9 +135277,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetValuedResourceRequest.decode = function decode(reader, length, error) {
+                        GetValuedResourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.GetValuedResourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -130154,7 +135295,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -130185,9 +135326,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetValuedResourceRequest.verify = function verify(message) {
+                        GetValuedResourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -130202,9 +135347,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.GetValuedResourceRequest} GetValuedResourceRequest
                          */
-                        GetValuedResourceRequest.fromObject = function fromObject(object) {
+                        GetValuedResourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.GetValuedResourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.GetValuedResourceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -130282,7 +135431,7 @@
                         function ListBigQueryExportsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -130367,9 +135516,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListBigQueryExportsRequest.decode = function decode(reader, length, error) {
+                        ListBigQueryExportsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListBigQueryExportsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -130389,7 +135542,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -130420,9 +135573,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListBigQueryExportsRequest.verify = function verify(message) {
+                        ListBigQueryExportsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -130443,9 +135600,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListBigQueryExportsRequest} ListBigQueryExportsRequest
                          */
-                        ListBigQueryExportsRequest.fromObject = function fromObject(object) {
+                        ListBigQueryExportsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListBigQueryExportsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListBigQueryExportsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -130534,7 +135695,7 @@
                             this.bigQueryExports = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -130610,9 +135771,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListBigQueryExportsResponse.decode = function decode(reader, length, error) {
+                        ListBigQueryExportsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListBigQueryExportsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -130622,7 +135787,7 @@
                                 case 1: {
                                         if (!(message.bigQueryExports && message.bigQueryExports.length))
                                             message.bigQueryExports = [];
-                                        message.bigQueryExports.push($root.google.cloud.securitycenter.v2.BigQueryExport.decode(reader, reader.uint32()));
+                                        message.bigQueryExports.push($root.google.cloud.securitycenter.v2.BigQueryExport.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -130630,7 +135795,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -130661,14 +135826,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListBigQueryExportsResponse.verify = function verify(message) {
+                        ListBigQueryExportsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.bigQueryExports != null && message.hasOwnProperty("bigQueryExports")) {
                                 if (!Array.isArray(message.bigQueryExports))
                                     return "bigQueryExports: array expected";
                                 for (var i = 0; i < message.bigQueryExports.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.BigQueryExport.verify(message.bigQueryExports[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.BigQueryExport.verify(message.bigQueryExports[i], long + 1);
                                     if (error)
                                         return "bigQueryExports." + error;
                                 }
@@ -130687,9 +135856,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListBigQueryExportsResponse} ListBigQueryExportsResponse
                          */
-                        ListBigQueryExportsResponse.fromObject = function fromObject(object) {
+                        ListBigQueryExportsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListBigQueryExportsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListBigQueryExportsResponse();
                             if (object.bigQueryExports) {
                                 if (!Array.isArray(object.bigQueryExports))
@@ -130698,7 +135871,7 @@
                                 for (var i = 0; i < object.bigQueryExports.length; ++i) {
                                     if (typeof object.bigQueryExports[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListBigQueryExportsResponse.bigQueryExports: object expected");
-                                    message.bigQueryExports[i] = $root.google.cloud.securitycenter.v2.BigQueryExport.fromObject(object.bigQueryExports[i]);
+                                    message.bigQueryExports[i] = $root.google.cloud.securitycenter.v2.BigQueryExport.fromObject(object.bigQueryExports[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -130787,7 +135960,7 @@
                         function ListFindingsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -130902,9 +136075,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListFindingsRequest.decode = function decode(reader, length, error) {
+                        ListFindingsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListFindingsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -130924,7 +136101,7 @@
                                         break;
                                     }
                                 case 7: {
-                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.fieldMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
@@ -130936,7 +136113,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -130967,9 +136144,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListFindingsRequest.verify = function verify(message) {
+                        ListFindingsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -130980,7 +136161,7 @@
                                 if (!$util.isString(message.orderBy))
                                     return "orderBy: string expected";
                             if (message.fieldMask != null && message.hasOwnProperty("fieldMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.fieldMask, long + 1);
                                 if (error)
                                     return "fieldMask." + error;
                             }
@@ -131001,9 +136182,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListFindingsRequest} ListFindingsRequest
                          */
-                        ListFindingsRequest.fromObject = function fromObject(object) {
+                        ListFindingsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListFindingsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListFindingsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -131014,7 +136199,7 @@
                             if (object.fieldMask != null) {
                                 if (typeof object.fieldMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.ListFindingsRequest.fieldMask: object expected");
-                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask);
+                                message.fieldMask = $root.google.protobuf.FieldMask.fromObject(object.fieldMask, long + 1);
                             }
                             if (object.pageToken != null)
                                 message.pageToken = String(object.pageToken);
@@ -131111,7 +136296,7 @@
                             this.listFindingsResults = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -131197,9 +136382,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListFindingsResponse.decode = function decode(reader, length, error) {
+                        ListFindingsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListFindingsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -131209,7 +136398,7 @@
                                 case 1: {
                                         if (!(message.listFindingsResults && message.listFindingsResults.length))
                                             message.listFindingsResults = [];
-                                        message.listFindingsResults.push($root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.decode(reader, reader.uint32()));
+                                        message.listFindingsResults.push($root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 3: {
@@ -131221,7 +136410,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -131252,14 +136441,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListFindingsResponse.verify = function verify(message) {
+                        ListFindingsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.listFindingsResults != null && message.hasOwnProperty("listFindingsResults")) {
                                 if (!Array.isArray(message.listFindingsResults))
                                     return "listFindingsResults: array expected";
                                 for (var i = 0; i < message.listFindingsResults.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.verify(message.listFindingsResults[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.verify(message.listFindingsResults[i], long + 1);
                                     if (error)
                                         return "listFindingsResults." + error;
                                 }
@@ -131281,9 +136474,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListFindingsResponse} ListFindingsResponse
                          */
-                        ListFindingsResponse.fromObject = function fromObject(object) {
+                        ListFindingsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListFindingsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListFindingsResponse();
                             if (object.listFindingsResults) {
                                 if (!Array.isArray(object.listFindingsResults))
@@ -131292,7 +136489,7 @@
                                 for (var i = 0; i < object.listFindingsResults.length; ++i) {
                                     if (typeof object.listFindingsResults[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListFindingsResponse.listFindingsResults: object expected");
-                                    message.listFindingsResults[i] = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.fromObject(object.listFindingsResults[i]);
+                                    message.listFindingsResults[i] = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.fromObject(object.listFindingsResults[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -131380,7 +136577,7 @@
                             function ListFindingsResult(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -131455,9 +136652,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ListFindingsResult.decode = function decode(reader, length, error) {
+                            ListFindingsResult.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -131465,15 +136666,15 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.finding = $root.google.cloud.securitycenter.v2.Finding.decode(reader, reader.uint32());
+                                            message.finding = $root.google.cloud.securitycenter.v2.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 3: {
-                                            message.resource = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.decode(reader, reader.uint32());
+                                            message.resource = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -131504,16 +136705,20 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ListFindingsResult.verify = function verify(message) {
+                            ListFindingsResult.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.finding != null && message.hasOwnProperty("finding")) {
-                                    var error = $root.google.cloud.securitycenter.v2.Finding.verify(message.finding);
+                                    var error = $root.google.cloud.securitycenter.v2.Finding.verify(message.finding, long + 1);
                                     if (error)
                                         return "finding." + error;
                                 }
                                 if (message.resource != null && message.hasOwnProperty("resource")) {
-                                    var error = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.verify(message.resource);
+                                    var error = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.verify(message.resource, long + 1);
                                     if (error)
                                         return "resource." + error;
                                 }
@@ -131528,19 +136733,23 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult} ListFindingsResult
                              */
-                            ListFindingsResult.fromObject = function fromObject(object) {
+                            ListFindingsResult.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult();
                                 if (object.finding != null) {
                                     if (typeof object.finding !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.finding: object expected");
-                                    message.finding = $root.google.cloud.securitycenter.v2.Finding.fromObject(object.finding);
+                                    message.finding = $root.google.cloud.securitycenter.v2.Finding.fromObject(object.finding, long + 1);
                                 }
                                 if (object.resource != null) {
                                     if (typeof object.resource !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.resource: object expected");
-                                    message.resource = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.fromObject(object.resource);
+                                    message.resource = $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.fromObject(object.resource, long + 1);
                                 }
                                 return message;
                             };
@@ -131625,7 +136834,7 @@
                                 function Resource(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -131804,9 +137013,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                Resource.decode = function decode(reader, length, error) {
+                                Resource.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -131838,19 +137051,19 @@
                                                 break;
                                             }
                                         case 7: {
-                                                message.gcpMetadata = $root.google.cloud.securitycenter.v2.GcpMetadata.decode(reader, reader.uint32());
+                                                message.gcpMetadata = $root.google.cloud.securitycenter.v2.GcpMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         case 8: {
-                                                message.awsMetadata = $root.google.cloud.securitycenter.v2.AwsMetadata.decode(reader, reader.uint32());
+                                                message.awsMetadata = $root.google.cloud.securitycenter.v2.AwsMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         case 9: {
-                                                message.azureMetadata = $root.google.cloud.securitycenter.v2.AzureMetadata.decode(reader, reader.uint32());
+                                                message.azureMetadata = $root.google.cloud.securitycenter.v2.AzureMetadata.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         case 10: {
-                                                message.resourcePath = $root.google.cloud.securitycenter.v2.ResourcePath.decode(reader, reader.uint32());
+                                                message.resourcePath = $root.google.cloud.securitycenter.v2.ResourcePath.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         case 11: {
@@ -131858,7 +137071,7 @@
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -131889,9 +137102,13 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                Resource.verify = function verify(message) {
+                                Resource.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     var properties = {};
                                     if (message.name != null && message.hasOwnProperty("name"))
                                         if (!$util.isString(message.name))
@@ -131921,7 +137138,7 @@
                                     if (message.gcpMetadata != null && message.hasOwnProperty("gcpMetadata")) {
                                         properties.cloudProviderMetadata = 1;
                                         {
-                                            var error = $root.google.cloud.securitycenter.v2.GcpMetadata.verify(message.gcpMetadata);
+                                            var error = $root.google.cloud.securitycenter.v2.GcpMetadata.verify(message.gcpMetadata, long + 1);
                                             if (error)
                                                 return "gcpMetadata." + error;
                                         }
@@ -131931,7 +137148,7 @@
                                             return "cloudProviderMetadata: multiple values";
                                         properties.cloudProviderMetadata = 1;
                                         {
-                                            var error = $root.google.cloud.securitycenter.v2.AwsMetadata.verify(message.awsMetadata);
+                                            var error = $root.google.cloud.securitycenter.v2.AwsMetadata.verify(message.awsMetadata, long + 1);
                                             if (error)
                                                 return "awsMetadata." + error;
                                         }
@@ -131941,13 +137158,13 @@
                                             return "cloudProviderMetadata: multiple values";
                                         properties.cloudProviderMetadata = 1;
                                         {
-                                            var error = $root.google.cloud.securitycenter.v2.AzureMetadata.verify(message.azureMetadata);
+                                            var error = $root.google.cloud.securitycenter.v2.AzureMetadata.verify(message.azureMetadata, long + 1);
                                             if (error)
                                                 return "azureMetadata." + error;
                                         }
                                     }
                                     if (message.resourcePath != null && message.hasOwnProperty("resourcePath")) {
-                                        var error = $root.google.cloud.securitycenter.v2.ResourcePath.verify(message.resourcePath);
+                                        var error = $root.google.cloud.securitycenter.v2.ResourcePath.verify(message.resourcePath, long + 1);
                                         if (error)
                                             return "resourcePath." + error;
                                     }
@@ -131965,9 +137182,13 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource} Resource
                                  */
-                                Resource.fromObject = function fromObject(object) {
+                                Resource.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource();
                                     if (object.name != null)
                                         message.name = String(object.name);
@@ -132006,22 +137227,22 @@
                                     if (object.gcpMetadata != null) {
                                         if (typeof object.gcpMetadata !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.gcpMetadata: object expected");
-                                        message.gcpMetadata = $root.google.cloud.securitycenter.v2.GcpMetadata.fromObject(object.gcpMetadata);
+                                        message.gcpMetadata = $root.google.cloud.securitycenter.v2.GcpMetadata.fromObject(object.gcpMetadata, long + 1);
                                     }
                                     if (object.awsMetadata != null) {
                                         if (typeof object.awsMetadata !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.awsMetadata: object expected");
-                                        message.awsMetadata = $root.google.cloud.securitycenter.v2.AwsMetadata.fromObject(object.awsMetadata);
+                                        message.awsMetadata = $root.google.cloud.securitycenter.v2.AwsMetadata.fromObject(object.awsMetadata, long + 1);
                                     }
                                     if (object.azureMetadata != null) {
                                         if (typeof object.azureMetadata !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.azureMetadata: object expected");
-                                        message.azureMetadata = $root.google.cloud.securitycenter.v2.AzureMetadata.fromObject(object.azureMetadata);
+                                        message.azureMetadata = $root.google.cloud.securitycenter.v2.AzureMetadata.fromObject(object.azureMetadata, long + 1);
                                     }
                                     if (object.resourcePath != null) {
                                         if (typeof object.resourcePath !== "object")
                                             throw TypeError(".google.cloud.securitycenter.v2.ListFindingsResponse.ListFindingsResult.Resource.resourcePath: object expected");
-                                        message.resourcePath = $root.google.cloud.securitycenter.v2.ResourcePath.fromObject(object.resourcePath);
+                                        message.resourcePath = $root.google.cloud.securitycenter.v2.ResourcePath.fromObject(object.resourcePath, long + 1);
                                     }
                                     if (object.resourcePathString != null)
                                         message.resourcePathString = String(object.resourcePathString);
@@ -132142,7 +137363,7 @@
                         function ListMuteConfigsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -132227,9 +137448,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListMuteConfigsRequest.decode = function decode(reader, length, error) {
+                        ListMuteConfigsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListMuteConfigsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -132249,7 +137474,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -132280,9 +137505,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListMuteConfigsRequest.verify = function verify(message) {
+                        ListMuteConfigsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -132303,9 +137532,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListMuteConfigsRequest} ListMuteConfigsRequest
                          */
-                        ListMuteConfigsRequest.fromObject = function fromObject(object) {
+                        ListMuteConfigsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListMuteConfigsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListMuteConfigsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -132394,7 +137627,7 @@
                             this.muteConfigs = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -132470,9 +137703,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListMuteConfigsResponse.decode = function decode(reader, length, error) {
+                        ListMuteConfigsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListMuteConfigsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -132482,7 +137719,7 @@
                                 case 1: {
                                         if (!(message.muteConfigs && message.muteConfigs.length))
                                             message.muteConfigs = [];
-                                        message.muteConfigs.push($root.google.cloud.securitycenter.v2.MuteConfig.decode(reader, reader.uint32()));
+                                        message.muteConfigs.push($root.google.cloud.securitycenter.v2.MuteConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -132490,7 +137727,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -132521,14 +137758,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListMuteConfigsResponse.verify = function verify(message) {
+                        ListMuteConfigsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.muteConfigs != null && message.hasOwnProperty("muteConfigs")) {
                                 if (!Array.isArray(message.muteConfigs))
                                     return "muteConfigs: array expected";
                                 for (var i = 0; i < message.muteConfigs.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.MuteConfig.verify(message.muteConfigs[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.MuteConfig.verify(message.muteConfigs[i], long + 1);
                                     if (error)
                                         return "muteConfigs." + error;
                                 }
@@ -132547,9 +137788,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListMuteConfigsResponse} ListMuteConfigsResponse
                          */
-                        ListMuteConfigsResponse.fromObject = function fromObject(object) {
+                        ListMuteConfigsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListMuteConfigsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListMuteConfigsResponse();
                             if (object.muteConfigs) {
                                 if (!Array.isArray(object.muteConfigs))
@@ -132558,7 +137803,7 @@
                                 for (var i = 0; i < object.muteConfigs.length; ++i) {
                                     if (typeof object.muteConfigs[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListMuteConfigsResponse.muteConfigs: object expected");
-                                    message.muteConfigs[i] = $root.google.cloud.securitycenter.v2.MuteConfig.fromObject(object.muteConfigs[i]);
+                                    message.muteConfigs[i] = $root.google.cloud.securitycenter.v2.MuteConfig.fromObject(object.muteConfigs[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -132644,7 +137889,7 @@
                         function ListNotificationConfigsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -132729,9 +137974,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNotificationConfigsRequest.decode = function decode(reader, length, error) {
+                        ListNotificationConfigsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListNotificationConfigsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -132751,7 +138000,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -132782,9 +138031,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNotificationConfigsRequest.verify = function verify(message) {
+                        ListNotificationConfigsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -132805,9 +138058,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListNotificationConfigsRequest} ListNotificationConfigsRequest
                          */
-                        ListNotificationConfigsRequest.fromObject = function fromObject(object) {
+                        ListNotificationConfigsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListNotificationConfigsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListNotificationConfigsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -132896,7 +138153,7 @@
                             this.notificationConfigs = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -132972,9 +138229,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNotificationConfigsResponse.decode = function decode(reader, length, error) {
+                        ListNotificationConfigsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListNotificationConfigsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -132984,7 +138245,7 @@
                                 case 1: {
                                         if (!(message.notificationConfigs && message.notificationConfigs.length))
                                             message.notificationConfigs = [];
-                                        message.notificationConfigs.push($root.google.cloud.securitycenter.v2.NotificationConfig.decode(reader, reader.uint32()));
+                                        message.notificationConfigs.push($root.google.cloud.securitycenter.v2.NotificationConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -132992,7 +138253,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -133023,14 +138284,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNotificationConfigsResponse.verify = function verify(message) {
+                        ListNotificationConfigsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.notificationConfigs != null && message.hasOwnProperty("notificationConfigs")) {
                                 if (!Array.isArray(message.notificationConfigs))
                                     return "notificationConfigs: array expected";
                                 for (var i = 0; i < message.notificationConfigs.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.NotificationConfig.verify(message.notificationConfigs[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.NotificationConfig.verify(message.notificationConfigs[i], long + 1);
                                     if (error)
                                         return "notificationConfigs." + error;
                                 }
@@ -133049,9 +138314,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListNotificationConfigsResponse} ListNotificationConfigsResponse
                          */
-                        ListNotificationConfigsResponse.fromObject = function fromObject(object) {
+                        ListNotificationConfigsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListNotificationConfigsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListNotificationConfigsResponse();
                             if (object.notificationConfigs) {
                                 if (!Array.isArray(object.notificationConfigs))
@@ -133060,7 +138329,7 @@
                                 for (var i = 0; i < object.notificationConfigs.length; ++i) {
                                     if (typeof object.notificationConfigs[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListNotificationConfigsResponse.notificationConfigs: object expected");
-                                    message.notificationConfigs[i] = $root.google.cloud.securitycenter.v2.NotificationConfig.fromObject(object.notificationConfigs[i]);
+                                    message.notificationConfigs[i] = $root.google.cloud.securitycenter.v2.NotificationConfig.fromObject(object.notificationConfigs[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -133146,7 +138415,7 @@
                         function ListResourceValueConfigsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -133231,9 +138500,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListResourceValueConfigsRequest.decode = function decode(reader, length, error) {
+                        ListResourceValueConfigsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListResourceValueConfigsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -133253,7 +138526,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -133284,9 +138557,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListResourceValueConfigsRequest.verify = function verify(message) {
+                        ListResourceValueConfigsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -133307,9 +138584,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListResourceValueConfigsRequest} ListResourceValueConfigsRequest
                          */
-                        ListResourceValueConfigsRequest.fromObject = function fromObject(object) {
+                        ListResourceValueConfigsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListResourceValueConfigsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListResourceValueConfigsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -133398,7 +138679,7 @@
                             this.resourceValueConfigs = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -133474,9 +138755,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListResourceValueConfigsResponse.decode = function decode(reader, length, error) {
+                        ListResourceValueConfigsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListResourceValueConfigsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -133486,7 +138771,7 @@
                                 case 1: {
                                         if (!(message.resourceValueConfigs && message.resourceValueConfigs.length))
                                             message.resourceValueConfigs = [];
-                                        message.resourceValueConfigs.push($root.google.cloud.securitycenter.v2.ResourceValueConfig.decode(reader, reader.uint32()));
+                                        message.resourceValueConfigs.push($root.google.cloud.securitycenter.v2.ResourceValueConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -133494,7 +138779,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -133525,14 +138810,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListResourceValueConfigsResponse.verify = function verify(message) {
+                        ListResourceValueConfigsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.resourceValueConfigs != null && message.hasOwnProperty("resourceValueConfigs")) {
                                 if (!Array.isArray(message.resourceValueConfigs))
                                     return "resourceValueConfigs: array expected";
                                 for (var i = 0; i < message.resourceValueConfigs.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.verify(message.resourceValueConfigs[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.verify(message.resourceValueConfigs[i], long + 1);
                                     if (error)
                                         return "resourceValueConfigs." + error;
                                 }
@@ -133551,9 +138840,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListResourceValueConfigsResponse} ListResourceValueConfigsResponse
                          */
-                        ListResourceValueConfigsResponse.fromObject = function fromObject(object) {
+                        ListResourceValueConfigsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListResourceValueConfigsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListResourceValueConfigsResponse();
                             if (object.resourceValueConfigs) {
                                 if (!Array.isArray(object.resourceValueConfigs))
@@ -133562,7 +138855,7 @@
                                 for (var i = 0; i < object.resourceValueConfigs.length; ++i) {
                                     if (typeof object.resourceValueConfigs[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListResourceValueConfigsResponse.resourceValueConfigs: object expected");
-                                    message.resourceValueConfigs[i] = $root.google.cloud.securitycenter.v2.ResourceValueConfig.fromObject(object.resourceValueConfigs[i]);
+                                    message.resourceValueConfigs[i] = $root.google.cloud.securitycenter.v2.ResourceValueConfig.fromObject(object.resourceValueConfigs[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -133648,7 +138941,7 @@
                         function ListSourcesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -133733,9 +139026,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSourcesRequest.decode = function decode(reader, length, error) {
+                        ListSourcesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListSourcesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -133755,7 +139052,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -133786,9 +139083,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSourcesRequest.verify = function verify(message) {
+                        ListSourcesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -133809,9 +139110,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListSourcesRequest} ListSourcesRequest
                          */
-                        ListSourcesRequest.fromObject = function fromObject(object) {
+                        ListSourcesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListSourcesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListSourcesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -133900,7 +139205,7 @@
                             this.sources = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -133976,9 +139281,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSourcesResponse.decode = function decode(reader, length, error) {
+                        ListSourcesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListSourcesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -133988,7 +139297,7 @@
                                 case 1: {
                                         if (!(message.sources && message.sources.length))
                                             message.sources = [];
-                                        message.sources.push($root.google.cloud.securitycenter.v2.Source.decode(reader, reader.uint32()));
+                                        message.sources.push($root.google.cloud.securitycenter.v2.Source.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -133996,7 +139305,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -134027,14 +139336,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSourcesResponse.verify = function verify(message) {
+                        ListSourcesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.sources != null && message.hasOwnProperty("sources")) {
                                 if (!Array.isArray(message.sources))
                                     return "sources: array expected";
                                 for (var i = 0; i < message.sources.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.Source.verify(message.sources[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.Source.verify(message.sources[i], long + 1);
                                     if (error)
                                         return "sources." + error;
                                 }
@@ -134053,9 +139366,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListSourcesResponse} ListSourcesResponse
                          */
-                        ListSourcesResponse.fromObject = function fromObject(object) {
+                        ListSourcesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListSourcesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListSourcesResponse();
                             if (object.sources) {
                                 if (!Array.isArray(object.sources))
@@ -134064,7 +139381,7 @@
                                 for (var i = 0; i < object.sources.length; ++i) {
                                     if (typeof object.sources[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListSourcesResponse.sources: object expected");
-                                    message.sources[i] = $root.google.cloud.securitycenter.v2.Source.fromObject(object.sources[i]);
+                                    message.sources[i] = $root.google.cloud.securitycenter.v2.Source.fromObject(object.sources[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -134152,7 +139469,7 @@
                         function ListValuedResourcesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -134257,9 +139574,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListValuedResourcesRequest.decode = function decode(reader, length, error) {
+                        ListValuedResourcesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListValuedResourcesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -134287,7 +139608,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -134318,9 +139639,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListValuedResourcesRequest.verify = function verify(message) {
+                        ListValuedResourcesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -134347,9 +139672,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListValuedResourcesRequest} ListValuedResourcesRequest
                          */
-                        ListValuedResourcesRequest.fromObject = function fromObject(object) {
+                        ListValuedResourcesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListValuedResourcesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListValuedResourcesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -134449,7 +139778,7 @@
                             this.valuedResources = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -134535,9 +139864,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListValuedResourcesResponse.decode = function decode(reader, length, error) {
+                        ListValuedResourcesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ListValuedResourcesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -134547,7 +139880,7 @@
                                 case 1: {
                                         if (!(message.valuedResources && message.valuedResources.length))
                                             message.valuedResources = [];
-                                        message.valuedResources.push($root.google.cloud.securitycenter.v2.ValuedResource.decode(reader, reader.uint32()));
+                                        message.valuedResources.push($root.google.cloud.securitycenter.v2.ValuedResource.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -134559,7 +139892,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -134590,14 +139923,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListValuedResourcesResponse.verify = function verify(message) {
+                        ListValuedResourcesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.valuedResources != null && message.hasOwnProperty("valuedResources")) {
                                 if (!Array.isArray(message.valuedResources))
                                     return "valuedResources: array expected";
                                 for (var i = 0; i < message.valuedResources.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ValuedResource.verify(message.valuedResources[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ValuedResource.verify(message.valuedResources[i], long + 1);
                                     if (error)
                                         return "valuedResources." + error;
                                 }
@@ -134619,9 +139956,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ListValuedResourcesResponse} ListValuedResourcesResponse
                          */
-                        ListValuedResourcesResponse.fromObject = function fromObject(object) {
+                        ListValuedResourcesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ListValuedResourcesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ListValuedResourcesResponse();
                             if (object.valuedResources) {
                                 if (!Array.isArray(object.valuedResources))
@@ -134630,7 +139971,7 @@
                                 for (var i = 0; i < object.valuedResources.length; ++i) {
                                     if (typeof object.valuedResources[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ListValuedResourcesResponse.valuedResources: object expected");
-                                    message.valuedResources[i] = $root.google.cloud.securitycenter.v2.ValuedResource.fromObject(object.valuedResources[i]);
+                                    message.valuedResources[i] = $root.google.cloud.securitycenter.v2.ValuedResource.fromObject(object.valuedResources[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -134721,7 +140062,7 @@
                         function SetFindingStateRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -134796,9 +140137,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SetFindingStateRequest.decode = function decode(reader, length, error) {
+                        SetFindingStateRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.SetFindingStateRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -134814,7 +140159,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -134845,9 +140190,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SetFindingStateRequest.verify = function verify(message) {
+                        SetFindingStateRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -134871,9 +140220,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.SetFindingStateRequest} SetFindingStateRequest
                          */
-                        SetFindingStateRequest.fromObject = function fromObject(object) {
+                        SetFindingStateRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.SetFindingStateRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.SetFindingStateRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -134974,7 +140327,7 @@
                         function SetMuteRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -135049,9 +140402,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SetMuteRequest.decode = function decode(reader, length, error) {
+                        SetMuteRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.SetMuteRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -135067,7 +140424,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -135098,9 +140455,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SetMuteRequest.verify = function verify(message) {
+                        SetMuteRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -135125,9 +140486,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.SetMuteRequest} SetMuteRequest
                          */
-                        SetMuteRequest.fromObject = function fromObject(object) {
+                        SetMuteRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.SetMuteRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.SetMuteRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -135232,7 +140597,7 @@
                         function UpdateBigQueryExportRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -135307,9 +140672,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateBigQueryExportRequest.decode = function decode(reader, length, error) {
+                        UpdateBigQueryExportRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.UpdateBigQueryExportRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -135317,15 +140686,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.bigQueryExport = $root.google.cloud.securitycenter.v2.BigQueryExport.decode(reader, reader.uint32());
+                                        message.bigQueryExport = $root.google.cloud.securitycenter.v2.BigQueryExport.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -135356,16 +140725,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateBigQueryExportRequest.verify = function verify(message) {
+                        UpdateBigQueryExportRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.bigQueryExport != null && message.hasOwnProperty("bigQueryExport")) {
-                                var error = $root.google.cloud.securitycenter.v2.BigQueryExport.verify(message.bigQueryExport);
+                                var error = $root.google.cloud.securitycenter.v2.BigQueryExport.verify(message.bigQueryExport, long + 1);
                                 if (error)
                                     return "bigQueryExport." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -135380,19 +140753,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.UpdateBigQueryExportRequest} UpdateBigQueryExportRequest
                          */
-                        UpdateBigQueryExportRequest.fromObject = function fromObject(object) {
+                        UpdateBigQueryExportRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.UpdateBigQueryExportRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.UpdateBigQueryExportRequest();
                             if (object.bigQueryExport != null) {
                                 if (typeof object.bigQueryExport !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateBigQueryExportRequest.bigQueryExport: object expected");
-                                message.bigQueryExport = $root.google.cloud.securitycenter.v2.BigQueryExport.fromObject(object.bigQueryExport);
+                                message.bigQueryExport = $root.google.cloud.securitycenter.v2.BigQueryExport.fromObject(object.bigQueryExport, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateBigQueryExportRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -135471,7 +140848,7 @@
                         function UpdateExternalSystemRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -135546,9 +140923,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateExternalSystemRequest.decode = function decode(reader, length, error) {
+                        UpdateExternalSystemRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.UpdateExternalSystemRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -135556,15 +140937,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.externalSystem = $root.google.cloud.securitycenter.v2.ExternalSystem.decode(reader, reader.uint32());
+                                        message.externalSystem = $root.google.cloud.securitycenter.v2.ExternalSystem.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -135595,16 +140976,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateExternalSystemRequest.verify = function verify(message) {
+                        UpdateExternalSystemRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.externalSystem != null && message.hasOwnProperty("externalSystem")) {
-                                var error = $root.google.cloud.securitycenter.v2.ExternalSystem.verify(message.externalSystem);
+                                var error = $root.google.cloud.securitycenter.v2.ExternalSystem.verify(message.externalSystem, long + 1);
                                 if (error)
                                     return "externalSystem." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -135619,19 +141004,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.UpdateExternalSystemRequest} UpdateExternalSystemRequest
                          */
-                        UpdateExternalSystemRequest.fromObject = function fromObject(object) {
+                        UpdateExternalSystemRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.UpdateExternalSystemRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.UpdateExternalSystemRequest();
                             if (object.externalSystem != null) {
                                 if (typeof object.externalSystem !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateExternalSystemRequest.externalSystem: object expected");
-                                message.externalSystem = $root.google.cloud.securitycenter.v2.ExternalSystem.fromObject(object.externalSystem);
+                                message.externalSystem = $root.google.cloud.securitycenter.v2.ExternalSystem.fromObject(object.externalSystem, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateExternalSystemRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -135710,7 +141099,7 @@
                         function UpdateFindingRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -135785,9 +141174,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateFindingRequest.decode = function decode(reader, length, error) {
+                        UpdateFindingRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.UpdateFindingRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -135795,15 +141188,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.finding = $root.google.cloud.securitycenter.v2.Finding.decode(reader, reader.uint32());
+                                        message.finding = $root.google.cloud.securitycenter.v2.Finding.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -135834,16 +141227,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateFindingRequest.verify = function verify(message) {
+                        UpdateFindingRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.finding != null && message.hasOwnProperty("finding")) {
-                                var error = $root.google.cloud.securitycenter.v2.Finding.verify(message.finding);
+                                var error = $root.google.cloud.securitycenter.v2.Finding.verify(message.finding, long + 1);
                                 if (error)
                                     return "finding." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -135858,19 +141255,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.UpdateFindingRequest} UpdateFindingRequest
                          */
-                        UpdateFindingRequest.fromObject = function fromObject(object) {
+                        UpdateFindingRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.UpdateFindingRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.UpdateFindingRequest();
                             if (object.finding != null) {
                                 if (typeof object.finding !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateFindingRequest.finding: object expected");
-                                message.finding = $root.google.cloud.securitycenter.v2.Finding.fromObject(object.finding);
+                                message.finding = $root.google.cloud.securitycenter.v2.Finding.fromObject(object.finding, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateFindingRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -135949,7 +141350,7 @@
                         function UpdateMuteConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -136024,9 +141425,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateMuteConfigRequest.decode = function decode(reader, length, error) {
+                        UpdateMuteConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.UpdateMuteConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -136034,15 +141439,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.muteConfig = $root.google.cloud.securitycenter.v2.MuteConfig.decode(reader, reader.uint32());
+                                        message.muteConfig = $root.google.cloud.securitycenter.v2.MuteConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -136073,16 +141478,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateMuteConfigRequest.verify = function verify(message) {
+                        UpdateMuteConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.muteConfig != null && message.hasOwnProperty("muteConfig")) {
-                                var error = $root.google.cloud.securitycenter.v2.MuteConfig.verify(message.muteConfig);
+                                var error = $root.google.cloud.securitycenter.v2.MuteConfig.verify(message.muteConfig, long + 1);
                                 if (error)
                                     return "muteConfig." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -136097,19 +141506,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.UpdateMuteConfigRequest} UpdateMuteConfigRequest
                          */
-                        UpdateMuteConfigRequest.fromObject = function fromObject(object) {
+                        UpdateMuteConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.UpdateMuteConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.UpdateMuteConfigRequest();
                             if (object.muteConfig != null) {
                                 if (typeof object.muteConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateMuteConfigRequest.muteConfig: object expected");
-                                message.muteConfig = $root.google.cloud.securitycenter.v2.MuteConfig.fromObject(object.muteConfig);
+                                message.muteConfig = $root.google.cloud.securitycenter.v2.MuteConfig.fromObject(object.muteConfig, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateMuteConfigRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -136188,7 +141601,7 @@
                         function UpdateNotificationConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -136263,9 +141676,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateNotificationConfigRequest.decode = function decode(reader, length, error) {
+                        UpdateNotificationConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.UpdateNotificationConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -136273,15 +141690,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.notificationConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.decode(reader, reader.uint32());
+                                        message.notificationConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -136312,16 +141729,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateNotificationConfigRequest.verify = function verify(message) {
+                        UpdateNotificationConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.notificationConfig != null && message.hasOwnProperty("notificationConfig")) {
-                                var error = $root.google.cloud.securitycenter.v2.NotificationConfig.verify(message.notificationConfig);
+                                var error = $root.google.cloud.securitycenter.v2.NotificationConfig.verify(message.notificationConfig, long + 1);
                                 if (error)
                                     return "notificationConfig." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -136336,19 +141757,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.UpdateNotificationConfigRequest} UpdateNotificationConfigRequest
                          */
-                        UpdateNotificationConfigRequest.fromObject = function fromObject(object) {
+                        UpdateNotificationConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.UpdateNotificationConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.UpdateNotificationConfigRequest();
                             if (object.notificationConfig != null) {
                                 if (typeof object.notificationConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateNotificationConfigRequest.notificationConfig: object expected");
-                                message.notificationConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.fromObject(object.notificationConfig);
+                                message.notificationConfig = $root.google.cloud.securitycenter.v2.NotificationConfig.fromObject(object.notificationConfig, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateNotificationConfigRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -136427,7 +141852,7 @@
                         function UpdateResourceValueConfigRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -136502,9 +141927,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateResourceValueConfigRequest.decode = function decode(reader, length, error) {
+                        UpdateResourceValueConfigRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.UpdateResourceValueConfigRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -136512,15 +141941,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.resourceValueConfig = $root.google.cloud.securitycenter.v2.ResourceValueConfig.decode(reader, reader.uint32());
+                                        message.resourceValueConfig = $root.google.cloud.securitycenter.v2.ResourceValueConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -136551,16 +141980,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateResourceValueConfigRequest.verify = function verify(message) {
+                        UpdateResourceValueConfigRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.resourceValueConfig != null && message.hasOwnProperty("resourceValueConfig")) {
-                                var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.verify(message.resourceValueConfig);
+                                var error = $root.google.cloud.securitycenter.v2.ResourceValueConfig.verify(message.resourceValueConfig, long + 1);
                                 if (error)
                                     return "resourceValueConfig." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -136575,19 +142008,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.UpdateResourceValueConfigRequest} UpdateResourceValueConfigRequest
                          */
-                        UpdateResourceValueConfigRequest.fromObject = function fromObject(object) {
+                        UpdateResourceValueConfigRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.UpdateResourceValueConfigRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.UpdateResourceValueConfigRequest();
                             if (object.resourceValueConfig != null) {
                                 if (typeof object.resourceValueConfig !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateResourceValueConfigRequest.resourceValueConfig: object expected");
-                                message.resourceValueConfig = $root.google.cloud.securitycenter.v2.ResourceValueConfig.fromObject(object.resourceValueConfig);
+                                message.resourceValueConfig = $root.google.cloud.securitycenter.v2.ResourceValueConfig.fromObject(object.resourceValueConfig, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateResourceValueConfigRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -136666,7 +142103,7 @@
                         function UpdateSecurityMarksRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -136741,9 +142178,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSecurityMarksRequest.decode = function decode(reader, length, error) {
+                        UpdateSecurityMarksRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.UpdateSecurityMarksRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -136751,15 +142192,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.securityMarks = $root.google.cloud.securitycenter.v2.SecurityMarks.decode(reader, reader.uint32());
+                                        message.securityMarks = $root.google.cloud.securitycenter.v2.SecurityMarks.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -136790,16 +142231,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSecurityMarksRequest.verify = function verify(message) {
+                        UpdateSecurityMarksRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityMarks != null && message.hasOwnProperty("securityMarks")) {
-                                var error = $root.google.cloud.securitycenter.v2.SecurityMarks.verify(message.securityMarks);
+                                var error = $root.google.cloud.securitycenter.v2.SecurityMarks.verify(message.securityMarks, long + 1);
                                 if (error)
                                     return "securityMarks." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -136814,19 +142259,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.UpdateSecurityMarksRequest} UpdateSecurityMarksRequest
                          */
-                        UpdateSecurityMarksRequest.fromObject = function fromObject(object) {
+                        UpdateSecurityMarksRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.UpdateSecurityMarksRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.UpdateSecurityMarksRequest();
                             if (object.securityMarks != null) {
                                 if (typeof object.securityMarks !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateSecurityMarksRequest.securityMarks: object expected");
-                                message.securityMarks = $root.google.cloud.securitycenter.v2.SecurityMarks.fromObject(object.securityMarks);
+                                message.securityMarks = $root.google.cloud.securitycenter.v2.SecurityMarks.fromObject(object.securityMarks, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateSecurityMarksRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -136905,7 +142354,7 @@
                         function UpdateSourceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -136980,9 +142429,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSourceRequest.decode = function decode(reader, length, error) {
+                        UpdateSourceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.UpdateSourceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -136990,15 +142443,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.source = $root.google.cloud.securitycenter.v2.Source.decode(reader, reader.uint32());
+                                        message.source = $root.google.cloud.securitycenter.v2.Source.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -137029,16 +142482,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSourceRequest.verify = function verify(message) {
+                        UpdateSourceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.source != null && message.hasOwnProperty("source")) {
-                                var error = $root.google.cloud.securitycenter.v2.Source.verify(message.source);
+                                var error = $root.google.cloud.securitycenter.v2.Source.verify(message.source, long + 1);
                                 if (error)
                                     return "source." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -137053,19 +142510,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.UpdateSourceRequest} UpdateSourceRequest
                          */
-                        UpdateSourceRequest.fromObject = function fromObject(object) {
+                        UpdateSourceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.UpdateSourceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.UpdateSourceRequest();
                             if (object.source != null) {
                                 if (typeof object.source !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateSourceRequest.source: object expected");
-                                message.source = $root.google.cloud.securitycenter.v2.Source.fromObject(object.source);
+                                message.source = $root.google.cloud.securitycenter.v2.Source.fromObject(object.source, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.UpdateSourceRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -137147,7 +142608,7 @@
                             this.resourceValueConfigsMetadata = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -137243,9 +142704,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Simulation.decode = function decode(reader, length, error) {
+                        Simulation.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Simulation();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -137257,13 +142722,13 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.resourceValueConfigsMetadata && message.resourceValueConfigsMetadata.length))
                                             message.resourceValueConfigsMetadata = [];
-                                        message.resourceValueConfigsMetadata.push($root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.decode(reader, reader.uint32()));
+                                        message.resourceValueConfigsMetadata.push($root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 4: {
@@ -137271,7 +142736,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -137302,14 +142767,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Simulation.verify = function verify(message) {
+                        Simulation.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
@@ -137317,7 +142786,7 @@
                                 if (!Array.isArray(message.resourceValueConfigsMetadata))
                                     return "resourceValueConfigsMetadata: array expected";
                                 for (var i = 0; i < message.resourceValueConfigsMetadata.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.verify(message.resourceValueConfigsMetadata[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.verify(message.resourceValueConfigsMetadata[i], long + 1);
                                     if (error)
                                         return "resourceValueConfigsMetadata." + error;
                                 }
@@ -137343,16 +142812,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Simulation} Simulation
                          */
-                        Simulation.fromObject = function fromObject(object) {
+                        Simulation.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Simulation)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Simulation();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.securitycenter.v2.Simulation.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.resourceValueConfigsMetadata) {
                                 if (!Array.isArray(object.resourceValueConfigsMetadata))
@@ -137361,7 +142834,7 @@
                                 for (var i = 0; i < object.resourceValueConfigsMetadata.length; ++i) {
                                     if (typeof object.resourceValueConfigsMetadata[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.Simulation.resourceValueConfigsMetadata: object expected");
-                                    message.resourceValueConfigsMetadata[i] = $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.fromObject(object.resourceValueConfigsMetadata[i]);
+                                    message.resourceValueConfigsMetadata[i] = $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.fromObject(object.resourceValueConfigsMetadata[i], long + 1);
                                 }
                             }
                             switch (object.cloudProvider) {
@@ -137481,7 +142954,7 @@
                             this.resourceValueConfigsUsed = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -137607,9 +143080,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ValuedResource.decode = function decode(reader, length, error) {
+                        ValuedResource.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ValuedResource();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -137643,11 +143120,11 @@
                                 case 7: {
                                         if (!(message.resourceValueConfigsUsed && message.resourceValueConfigsUsed.length))
                                             message.resourceValueConfigsUsed = [];
-                                        message.resourceValueConfigsUsed.push($root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.decode(reader, reader.uint32()));
+                                        message.resourceValueConfigsUsed.push($root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -137678,9 +143155,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ValuedResource.verify = function verify(message) {
+                        ValuedResource.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -137710,7 +143191,7 @@
                                 if (!Array.isArray(message.resourceValueConfigsUsed))
                                     return "resourceValueConfigsUsed: array expected";
                                 for (var i = 0; i < message.resourceValueConfigsUsed.length; ++i) {
-                                    var error = $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.verify(message.resourceValueConfigsUsed[i]);
+                                    var error = $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.verify(message.resourceValueConfigsUsed[i], long + 1);
                                     if (error)
                                         return "resourceValueConfigsUsed." + error;
                                 }
@@ -137726,9 +143207,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ValuedResource} ValuedResource
                          */
-                        ValuedResource.fromObject = function fromObject(object) {
+                        ValuedResource.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ValuedResource)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ValuedResource();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -137771,7 +143256,7 @@
                                 for (var i = 0; i < object.resourceValueConfigsUsed.length; ++i) {
                                     if (typeof object.resourceValueConfigsUsed[i] !== "object")
                                         throw TypeError(".google.cloud.securitycenter.v2.ValuedResource.resourceValueConfigsUsed: object expected");
-                                    message.resourceValueConfigsUsed[i] = $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.fromObject(object.resourceValueConfigsUsed[i]);
+                                    message.resourceValueConfigsUsed[i] = $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata.fromObject(object.resourceValueConfigsUsed[i], long + 1);
                                 }
                             }
                             return message;
@@ -137887,7 +143372,7 @@
                         function ResourceValueConfigMetadata(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -137952,9 +143437,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResourceValueConfigMetadata.decode = function decode(reader, length, error) {
+                        ResourceValueConfigMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -137966,7 +143455,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -137997,9 +143486,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResourceValueConfigMetadata.verify = function verify(message) {
+                        ResourceValueConfigMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -138014,9 +143507,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.ResourceValueConfigMetadata} ResourceValueConfigMetadata
                          */
-                        ResourceValueConfigMetadata.fromObject = function fromObject(object) {
+                        ResourceValueConfigMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.ResourceValueConfigMetadata();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -138095,7 +143592,7 @@
                         function Source(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -138190,9 +143687,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Source.decode = function decode(reader, length, error) {
+                        Source.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycenter.v2.Source();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -138216,7 +143717,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -138247,9 +143748,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Source.verify = function verify(message) {
+                        Source.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -138273,9 +143778,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycenter.v2.Source} Source
                          */
-                        Source.fromObject = function fromObject(object) {
+                        Source.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycenter.v2.Source)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycenter.v2.Source();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -138393,7 +143902,7 @@
                     this.style = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -138523,9 +144032,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceDescriptor.decode = function decode(reader, length, error) {
+                ResourceDescriptor.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceDescriptor();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -138570,7 +144083,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -138601,9 +144114,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceDescriptor.verify = function verify(message) {
+                ResourceDescriptor.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -138655,9 +144172,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceDescriptor} ResourceDescriptor
                  */
-                ResourceDescriptor.fromObject = function fromObject(object) {
+                ResourceDescriptor.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceDescriptor)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceDescriptor();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -138845,7 +144366,7 @@
                 function ResourceReference(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -138920,9 +144441,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceReference.decode = function decode(reader, length, error) {
+                ResourceReference.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceReference();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -138938,7 +144463,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -138969,9 +144494,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceReference.verify = function verify(message) {
+                ResourceReference.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -138989,9 +144518,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceReference} ResourceReference
                  */
-                ResourceReference.fromObject = function fromObject(object) {
+                ResourceReference.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceReference)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceReference();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -139103,7 +144636,7 @@
                     this.referencedTypes = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -139179,9 +144712,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldInfo.decode = function decode(reader, length, error) {
+                FieldInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.FieldInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -139195,11 +144732,11 @@
                         case 2: {
                                 if (!(message.referencedTypes && message.referencedTypes.length))
                                     message.referencedTypes = [];
-                                message.referencedTypes.push($root.google.api.TypeReference.decode(reader, reader.uint32()));
+                                message.referencedTypes.push($root.google.api.TypeReference.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -139230,9 +144767,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldInfo.verify = function verify(message) {
+                FieldInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.format != null && message.hasOwnProperty("format"))
                         switch (message.format) {
                         default:
@@ -139248,7 +144789,7 @@
                         if (!Array.isArray(message.referencedTypes))
                             return "referencedTypes: array expected";
                         for (var i = 0; i < message.referencedTypes.length; ++i) {
-                            var error = $root.google.api.TypeReference.verify(message.referencedTypes[i]);
+                            var error = $root.google.api.TypeReference.verify(message.referencedTypes[i], long + 1);
                             if (error)
                                 return "referencedTypes." + error;
                         }
@@ -139264,9 +144805,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.FieldInfo} FieldInfo
                  */
-                FieldInfo.fromObject = function fromObject(object) {
+                FieldInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.FieldInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.FieldInfo();
                     switch (object.format) {
                     default:
@@ -139303,7 +144848,7 @@
                         for (var i = 0; i < object.referencedTypes.length; ++i) {
                             if (typeof object.referencedTypes[i] !== "object")
                                 throw TypeError(".google.api.FieldInfo.referencedTypes: object expected");
-                            message.referencedTypes[i] = $root.google.api.TypeReference.fromObject(object.referencedTypes[i]);
+                            message.referencedTypes[i] = $root.google.api.TypeReference.fromObject(object.referencedTypes[i], long + 1);
                         }
                     }
                     return message;
@@ -139405,7 +144950,7 @@
                 function TypeReference(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -139470,9 +145015,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                TypeReference.decode = function decode(reader, length, error) {
+                TypeReference.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.TypeReference();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -139484,7 +145033,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -139515,9 +145064,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                TypeReference.verify = function verify(message) {
+                TypeReference.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.typeName != null && message.hasOwnProperty("typeName"))
                         if (!$util.isString(message.typeName))
                             return "typeName: string expected";
@@ -139532,9 +145085,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.TypeReference} TypeReference
                  */
-                TypeReference.fromObject = function fromObject(object) {
+                TypeReference.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.TypeReference)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.TypeReference();
                     if (object.typeName != null)
                         message.typeName = String(object.typeName);
@@ -139612,7 +145169,7 @@
                     this.rules = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -139688,9 +145245,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Http.decode = function decode(reader, length, error) {
+                Http.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -139700,7 +145261,7 @@
                         case 1: {
                                 if (!(message.rules && message.rules.length))
                                     message.rules = [];
-                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
@@ -139708,7 +145269,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -139739,14 +145300,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Http.verify = function verify(message) {
+                Http.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.rules != null && message.hasOwnProperty("rules")) {
                         if (!Array.isArray(message.rules))
                             return "rules: array expected";
                         for (var i = 0; i < message.rules.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.rules[i]);
+                            var error = $root.google.api.HttpRule.verify(message.rules[i], long + 1);
                             if (error)
                                 return "rules." + error;
                         }
@@ -139765,9 +145330,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Http} Http
                  */
-                Http.fromObject = function fromObject(object) {
+                Http.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Http)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Http();
                     if (object.rules) {
                         if (!Array.isArray(object.rules))
@@ -139776,7 +145345,7 @@
                         for (var i = 0; i < object.rules.length; ++i) {
                             if (typeof object.rules[i] !== "object")
                                 throw TypeError(".google.api.Http.rules: object expected");
-                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]);
+                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i], long + 1);
                         }
                     }
                     if (object.fullyDecodeReservedExpansion != null)
@@ -139870,7 +145439,7 @@
                     this.additionalBindings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -140040,9 +145609,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                HttpRule.decode = function decode(reader, length, error) {
+                HttpRule.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -140074,7 +145647,7 @@
                                 break;
                             }
                         case 8: {
-                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32());
+                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 7: {
@@ -140088,11 +145661,11 @@
                         case 11: {
                                 if (!(message.additionalBindings && message.additionalBindings.length))
                                     message.additionalBindings = [];
-                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -140123,9 +145696,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                HttpRule.verify = function verify(message) {
+                HttpRule.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     var properties = {};
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
@@ -140168,7 +145745,7 @@
                             return "pattern: multiple values";
                         properties.pattern = 1;
                         {
-                            var error = $root.google.api.CustomHttpPattern.verify(message.custom);
+                            var error = $root.google.api.CustomHttpPattern.verify(message.custom, long + 1);
                             if (error)
                                 return "custom." + error;
                         }
@@ -140183,7 +145760,7 @@
                         if (!Array.isArray(message.additionalBindings))
                             return "additionalBindings: array expected";
                         for (var i = 0; i < message.additionalBindings.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]);
+                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i], long + 1);
                             if (error)
                                 return "additionalBindings." + error;
                         }
@@ -140199,9 +145776,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.HttpRule} HttpRule
                  */
-                HttpRule.fromObject = function fromObject(object) {
+                HttpRule.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.HttpRule)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.HttpRule();
                     if (object.selector != null)
                         message.selector = String(object.selector);
@@ -140218,7 +145799,7 @@
                     if (object.custom != null) {
                         if (typeof object.custom !== "object")
                             throw TypeError(".google.api.HttpRule.custom: object expected");
-                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom);
+                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom, long + 1);
                     }
                     if (object.body != null)
                         message.body = String(object.body);
@@ -140231,7 +145812,7 @@
                         for (var i = 0; i < object.additionalBindings.length; ++i) {
                             if (typeof object.additionalBindings[i] !== "object")
                                 throw TypeError(".google.api.HttpRule.additionalBindings: object expected");
-                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]);
+                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i], long + 1);
                         }
                     }
                     return message;
@@ -140351,7 +145932,7 @@
                 function CustomHttpPattern(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -140426,9 +146007,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CustomHttpPattern.decode = function decode(reader, length, error) {
+                CustomHttpPattern.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -140444,7 +146029,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -140475,9 +146060,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CustomHttpPattern.verify = function verify(message) {
+                CustomHttpPattern.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.kind != null && message.hasOwnProperty("kind"))
                         if (!$util.isString(message.kind))
                             return "kind: string expected";
@@ -140495,9 +146084,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CustomHttpPattern} CustomHttpPattern
                  */
-                CustomHttpPattern.fromObject = function fromObject(object) {
+                CustomHttpPattern.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CustomHttpPattern)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CustomHttpPattern();
                     if (object.kind != null)
                         message.kind = String(object.kind);
@@ -140582,7 +146175,7 @@
                     this.destinations = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -140671,9 +146264,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CommonLanguageSettings.decode = function decode(reader, length, error) {
+                CommonLanguageSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CommonLanguageSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -140696,11 +146293,11 @@
                                 break;
                             }
                         case 3: {
-                                message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.decode(reader, reader.uint32());
+                                message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -140731,9 +146328,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CommonLanguageSettings.verify = function verify(message) {
+                CommonLanguageSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
                         if (!$util.isString(message.referenceDocsUri))
                             return "referenceDocsUri: string expected";
@@ -140751,7 +146352,7 @@
                             }
                     }
                     if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) {
-                        var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration);
+                        var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration, long + 1);
                         if (error)
                             return "selectiveGapicGeneration." + error;
                     }
@@ -140766,9 +146367,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings
                  */
-                CommonLanguageSettings.fromObject = function fromObject(object) {
+                CommonLanguageSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CommonLanguageSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CommonLanguageSettings();
                     if (object.referenceDocsUri != null)
                         message.referenceDocsUri = String(object.referenceDocsUri);
@@ -140800,7 +146405,7 @@
                     if (object.selectiveGapicGeneration != null) {
                         if (typeof object.selectiveGapicGeneration !== "object")
                             throw TypeError(".google.api.CommonLanguageSettings.selectiveGapicGeneration: object expected");
-                        message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration);
+                        message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration, long + 1);
                     }
                     return message;
                 };
@@ -140895,7 +146500,7 @@
                 function ClientLibrarySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -141060,9 +146665,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ClientLibrarySettings.decode = function decode(reader, length, error) {
+                ClientLibrarySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ClientLibrarySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -141082,39 +146691,39 @@
                                 break;
                             }
                         case 21: {
-                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32());
+                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 22: {
-                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32());
+                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 23: {
-                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32());
+                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 24: {
-                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32());
+                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 25: {
-                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32());
+                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 26: {
-                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32());
+                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 27: {
-                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32());
+                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 28: {
-                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32());
+                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -141145,9 +146754,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ClientLibrarySettings.verify = function verify(message) {
+                ClientLibrarySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.version != null && message.hasOwnProperty("version"))
                         if (!$util.isString(message.version))
                             return "version: string expected";
@@ -141169,42 +146782,42 @@
                         if (typeof message.restNumericEnums !== "boolean")
                             return "restNumericEnums: boolean expected";
                     if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) {
-                        var error = $root.google.api.JavaSettings.verify(message.javaSettings);
+                        var error = $root.google.api.JavaSettings.verify(message.javaSettings, long + 1);
                         if (error)
                             return "javaSettings." + error;
                     }
                     if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) {
-                        var error = $root.google.api.CppSettings.verify(message.cppSettings);
+                        var error = $root.google.api.CppSettings.verify(message.cppSettings, long + 1);
                         if (error)
                             return "cppSettings." + error;
                     }
                     if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) {
-                        var error = $root.google.api.PhpSettings.verify(message.phpSettings);
+                        var error = $root.google.api.PhpSettings.verify(message.phpSettings, long + 1);
                         if (error)
                             return "phpSettings." + error;
                     }
                     if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) {
-                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings);
+                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings, long + 1);
                         if (error)
                             return "pythonSettings." + error;
                     }
                     if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) {
-                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings);
+                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings, long + 1);
                         if (error)
                             return "nodeSettings." + error;
                     }
                     if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) {
-                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings);
+                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings, long + 1);
                         if (error)
                             return "dotnetSettings." + error;
                     }
                     if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) {
-                        var error = $root.google.api.RubySettings.verify(message.rubySettings);
+                        var error = $root.google.api.RubySettings.verify(message.rubySettings, long + 1);
                         if (error)
                             return "rubySettings." + error;
                     }
                     if (message.goSettings != null && message.hasOwnProperty("goSettings")) {
-                        var error = $root.google.api.GoSettings.verify(message.goSettings);
+                        var error = $root.google.api.GoSettings.verify(message.goSettings, long + 1);
                         if (error)
                             return "goSettings." + error;
                     }
@@ -141219,9 +146832,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings
                  */
-                ClientLibrarySettings.fromObject = function fromObject(object) {
+                ClientLibrarySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ClientLibrarySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ClientLibrarySettings();
                     if (object.version != null)
                         message.version = String(object.version);
@@ -141270,42 +146887,42 @@
                     if (object.javaSettings != null) {
                         if (typeof object.javaSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.javaSettings: object expected");
-                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings);
+                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings, long + 1);
                     }
                     if (object.cppSettings != null) {
                         if (typeof object.cppSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.cppSettings: object expected");
-                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings);
+                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings, long + 1);
                     }
                     if (object.phpSettings != null) {
                         if (typeof object.phpSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.phpSettings: object expected");
-                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings);
+                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings, long + 1);
                     }
                     if (object.pythonSettings != null) {
                         if (typeof object.pythonSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.pythonSettings: object expected");
-                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings);
+                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings, long + 1);
                     }
                     if (object.nodeSettings != null) {
                         if (typeof object.nodeSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.nodeSettings: object expected");
-                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings);
+                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings, long + 1);
                     }
                     if (object.dotnetSettings != null) {
                         if (typeof object.dotnetSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.dotnetSettings: object expected");
-                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings);
+                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings, long + 1);
                     }
                     if (object.rubySettings != null) {
                         if (typeof object.rubySettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.rubySettings: object expected");
-                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings);
+                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings, long + 1);
                     }
                     if (object.goSettings != null) {
                         if (typeof object.goSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.goSettings: object expected");
-                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings);
+                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings, long + 1);
                     }
                     return message;
                 };
@@ -141423,7 +147040,7 @@
                     this.librarySettings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -141591,9 +147208,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Publishing.decode = function decode(reader, length, error) {
+                Publishing.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Publishing();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -141603,7 +147224,7 @@
                         case 2: {
                                 if (!(message.methodSettings && message.methodSettings.length))
                                     message.methodSettings = [];
-                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32()));
+                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 101: {
@@ -141639,7 +147260,7 @@
                         case 109: {
                                 if (!(message.librarySettings && message.librarySettings.length))
                                     message.librarySettings = [];
-                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32()));
+                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 110: {
@@ -141651,7 +147272,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -141682,14 +147303,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Publishing.verify = function verify(message) {
+                Publishing.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.methodSettings != null && message.hasOwnProperty("methodSettings")) {
                         if (!Array.isArray(message.methodSettings))
                             return "methodSettings: array expected";
                         for (var i = 0; i < message.methodSettings.length; ++i) {
-                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i]);
+                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i], long + 1);
                             if (error)
                                 return "methodSettings." + error;
                         }
@@ -141734,7 +147359,7 @@
                         if (!Array.isArray(message.librarySettings))
                             return "librarySettings: array expected";
                         for (var i = 0; i < message.librarySettings.length; ++i) {
-                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i]);
+                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i], long + 1);
                             if (error)
                                 return "librarySettings." + error;
                         }
@@ -141756,9 +147381,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Publishing} Publishing
                  */
-                Publishing.fromObject = function fromObject(object) {
+                Publishing.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Publishing)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Publishing();
                     if (object.methodSettings) {
                         if (!Array.isArray(object.methodSettings))
@@ -141767,7 +147396,7 @@
                         for (var i = 0; i < object.methodSettings.length; ++i) {
                             if (typeof object.methodSettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.methodSettings: object expected");
-                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i]);
+                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i], long + 1);
                         }
                     }
                     if (object.newIssueUri != null)
@@ -141834,7 +147463,7 @@
                         for (var i = 0; i < object.librarySettings.length; ++i) {
                             if (typeof object.librarySettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.librarySettings: object expected");
-                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i]);
+                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i], long + 1);
                         }
                     }
                     if (object.protoReferenceDocumentationUri != null)
@@ -141958,7 +147587,7 @@
                     this.serviceClassNames = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -142044,9 +147673,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                JavaSettings.decode = function decode(reader, length, error) {
+                JavaSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.JavaSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -142073,19 +147706,21 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.serviceClassNames, key);
                                 message.serviceClassNames[key] = value;
                                 break;
                             }
                         case 3: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -142116,9 +147751,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                JavaSettings.verify = function verify(message) {
+                JavaSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage"))
                         if (!$util.isString(message.libraryPackage))
                             return "libraryPackage: string expected";
@@ -142131,7 +147770,7 @@
                                 return "serviceClassNames: string{k:string} expected";
                     }
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -142146,9 +147785,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.JavaSettings} JavaSettings
                  */
-                JavaSettings.fromObject = function fromObject(object) {
+                JavaSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.JavaSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.JavaSettings();
                     if (object.libraryPackage != null)
                         message.libraryPackage = String(object.libraryPackage);
@@ -142156,13 +147799,16 @@
                         if (typeof object.serviceClassNames !== "object")
                             throw TypeError(".google.api.JavaSettings.serviceClassNames: object expected");
                         message.serviceClassNames = {};
-                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.serviceClassNames, keys[i]);
                             message.serviceClassNames[keys[i]] = String(object.serviceClassNames[keys[i]]);
+                        }
                     }
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.JavaSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -142191,8 +147837,11 @@
                     var keys2;
                     if (message.serviceClassNames && (keys2 = Object.keys(message.serviceClassNames)).length) {
                         object.serviceClassNames = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.serviceClassNames, keys2[j]);
                             object.serviceClassNames[keys2[j]] = message.serviceClassNames[keys2[j]];
+                        }
                     }
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
@@ -142248,7 +147897,7 @@
                 function CppSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -142313,9 +147962,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CppSettings.decode = function decode(reader, length, error) {
+                CppSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CppSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -142323,11 +147976,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -142358,11 +148011,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CppSettings.verify = function verify(message) {
+                CppSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -142377,14 +148034,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CppSettings} CppSettings
                  */
-                CppSettings.fromObject = function fromObject(object) {
+                CppSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CppSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CppSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.CppSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -142458,7 +148119,7 @@
                 function PhpSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -142523,9 +148184,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PhpSettings.decode = function decode(reader, length, error) {
+                PhpSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PhpSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -142533,11 +148198,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -142568,11 +148233,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PhpSettings.verify = function verify(message) {
+                PhpSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -142587,14 +148256,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PhpSettings} PhpSettings
                  */
-                PhpSettings.fromObject = function fromObject(object) {
+                PhpSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PhpSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PhpSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PhpSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -142669,7 +148342,7 @@
                 function PythonSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -142744,9 +148417,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PythonSettings.decode = function decode(reader, length, error) {
+                PythonSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -142754,15 +148431,15 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 2: {
-                                message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.decode(reader, reader.uint32());
+                                message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -142793,16 +148470,20 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PythonSettings.verify = function verify(message) {
+                PythonSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
                     if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) {
-                        var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures);
+                        var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures, long + 1);
                         if (error)
                             return "experimentalFeatures." + error;
                     }
@@ -142817,19 +148498,23 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PythonSettings} PythonSettings
                  */
-                PythonSettings.fromObject = function fromObject(object) {
+                PythonSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PythonSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PythonSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PythonSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     if (object.experimentalFeatures != null) {
                         if (typeof object.experimentalFeatures !== "object")
                             throw TypeError(".google.api.PythonSettings.experimentalFeatures: object expected");
-                        message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures);
+                        message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures, long + 1);
                     }
                     return message;
                 };
@@ -142906,7 +148591,7 @@
                     function ExperimentalFeatures(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -142991,9 +148676,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ExperimentalFeatures.decode = function decode(reader, length, error) {
+                    ExperimentalFeatures.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings.ExperimentalFeatures();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -143013,7 +148702,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -143044,9 +148733,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ExperimentalFeatures.verify = function verify(message) {
+                    ExperimentalFeatures.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
                             if (typeof message.restAsyncIoEnabled !== "boolean")
                                 return "restAsyncIoEnabled: boolean expected";
@@ -143067,9 +148760,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
                      */
-                    ExperimentalFeatures.fromObject = function fromObject(object) {
+                    ExperimentalFeatures.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.api.PythonSettings.ExperimentalFeatures)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.api.PythonSettings.ExperimentalFeatures();
                         if (object.restAsyncIoEnabled != null)
                             message.restAsyncIoEnabled = Boolean(object.restAsyncIoEnabled);
@@ -143159,7 +148856,7 @@
                 function NodeSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -143224,9 +148921,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                NodeSettings.decode = function decode(reader, length, error) {
+                NodeSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.NodeSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -143234,11 +148935,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -143269,11 +148970,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                NodeSettings.verify = function verify(message) {
+                NodeSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -143288,14 +148993,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.NodeSettings} NodeSettings
                  */
-                NodeSettings.fromObject = function fromObject(object) {
+                NodeSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.NodeSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.NodeSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.NodeSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -143379,7 +149088,7 @@
                     this.handwrittenSignatures = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -143499,9 +149208,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DotnetSettings.decode = function decode(reader, length, error) {
+                DotnetSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -143509,7 +149222,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 2: {
@@ -143528,10 +149241,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
                                 message.renamedServices[key] = value;
                                 break;
                             }
@@ -143551,10 +149266,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedResources, key);
                                 message.renamedResources[key] = value;
                                 break;
                             }
@@ -143577,7 +149294,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -143608,11 +149325,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DotnetSettings.verify = function verify(message) {
+                DotnetSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -143664,28 +149385,38 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.DotnetSettings} DotnetSettings
                  */
-                DotnetSettings.fromObject = function fromObject(object) {
+                DotnetSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.DotnetSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.DotnetSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.DotnetSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     if (object.renamedServices) {
                         if (typeof object.renamedServices !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedServices: object expected");
                         message.renamedServices = {};
-                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
                             message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     if (object.renamedResources) {
                         if (typeof object.renamedResources !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedResources: object expected");
                         message.renamedResources = {};
-                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedResources, keys[i]);
                             message.renamedResources[keys[i]] = String(object.renamedResources[keys[i]]);
+                        }
                     }
                     if (object.ignoredResources) {
                         if (!Array.isArray(object.ignoredResources))
@@ -143740,13 +149471,19 @@
                     var keys2;
                     if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
                         object.renamedServices = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
                             object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
                     }
                     if (message.renamedResources && (keys2 = Object.keys(message.renamedResources)).length) {
                         object.renamedResources = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedResources, keys2[j]);
                             object.renamedResources[keys2[j]] = message.renamedResources[keys2[j]];
+                        }
                     }
                     if (message.ignoredResources && message.ignoredResources.length) {
                         object.ignoredResources = [];
@@ -143815,7 +149552,7 @@
                 function RubySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -143880,9 +149617,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                RubySettings.decode = function decode(reader, length, error) {
+                RubySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RubySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -143890,11 +149631,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -143925,11 +149666,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                RubySettings.verify = function verify(message) {
+                RubySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -143944,14 +149689,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.RubySettings} RubySettings
                  */
-                RubySettings.fromObject = function fromObject(object) {
+                RubySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.RubySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.RubySettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.RubySettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -144027,7 +149776,7 @@
                     this.renamedServices = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -144103,9 +149852,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GoSettings.decode = function decode(reader, length, error) {
+                GoSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -144113,7 +149866,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 2: {
@@ -144132,15 +149885,17 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
                                 message.renamedServices[key] = value;
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -144171,11 +149926,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GoSettings.verify = function verify(message) {
+                GoSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -144198,21 +149957,28 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.GoSettings} GoSettings
                  */
-                GoSettings.fromObject = function fromObject(object) {
+                GoSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.GoSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.GoSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.GoSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     if (object.renamedServices) {
                         if (typeof object.renamedServices !== "object")
                             throw TypeError(".google.api.GoSettings.renamedServices: object expected");
                         message.renamedServices = {};
-                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
                             message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     return message;
                 };
@@ -144239,8 +150005,11 @@
                     var keys2;
                     if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
                         object.renamedServices = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
                             object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
                     }
                     return object;
                 };
@@ -144297,7 +150066,7 @@
                     this.autoPopulatedFields = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -144383,9 +150152,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodSettings.decode = function decode(reader, length, error) {
+                MethodSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -144397,7 +150170,7 @@
                                 break;
                             }
                         case 2: {
-                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32());
+                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -144407,7 +150180,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -144438,14 +150211,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodSettings.verify = function verify(message) {
+                MethodSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
                             return "selector: string expected";
                     if (message.longRunning != null && message.hasOwnProperty("longRunning")) {
-                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning);
+                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning, long + 1);
                         if (error)
                             return "longRunning." + error;
                     }
@@ -144467,16 +150244,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.MethodSettings} MethodSettings
                  */
-                MethodSettings.fromObject = function fromObject(object) {
+                MethodSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.MethodSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.MethodSettings();
                     if (object.selector != null)
                         message.selector = String(object.selector);
                     if (object.longRunning != null) {
                         if (typeof object.longRunning !== "object")
                             throw TypeError(".google.api.MethodSettings.longRunning: object expected");
-                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning);
+                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning, long + 1);
                     }
                     if (object.autoPopulatedFields) {
                         if (!Array.isArray(object.autoPopulatedFields))
@@ -144568,7 +150349,7 @@
                     function LongRunning(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -144663,9 +150444,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    LongRunning.decode = function decode(reader, length, error) {
+                    LongRunning.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings.LongRunning();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -144673,7 +150458,7 @@
                                 break;
                             switch (tag >>> 3) {
                             case 1: {
-                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 2: {
@@ -144681,15 +150466,15 @@
                                     break;
                                 }
                             case 3: {
-                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 4: {
-                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -144720,11 +150505,15 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    LongRunning.verify = function verify(message) {
+                    LongRunning.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay, long + 1);
                             if (error)
                                 return "initialPollDelay." + error;
                         }
@@ -144732,12 +150521,12 @@
                             if (typeof message.pollDelayMultiplier !== "number")
                                 return "pollDelayMultiplier: number expected";
                         if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay, long + 1);
                             if (error)
                                 return "maxPollDelay." + error;
                         }
                         if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) {
-                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout);
+                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout, long + 1);
                             if (error)
                                 return "totalPollTimeout." + error;
                         }
@@ -144752,26 +150541,30 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.api.MethodSettings.LongRunning} LongRunning
                      */
-                    LongRunning.fromObject = function fromObject(object) {
+                    LongRunning.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.api.MethodSettings.LongRunning)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.api.MethodSettings.LongRunning();
                         if (object.initialPollDelay != null) {
                             if (typeof object.initialPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.initialPollDelay: object expected");
-                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay);
+                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay, long + 1);
                         }
                         if (object.pollDelayMultiplier != null)
                             message.pollDelayMultiplier = Number(object.pollDelayMultiplier);
                         if (object.maxPollDelay != null) {
                             if (typeof object.maxPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.maxPollDelay: object expected");
-                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay);
+                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay, long + 1);
                         }
                         if (object.totalPollTimeout != null) {
                             if (typeof object.totalPollTimeout !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.totalPollTimeout: object expected");
-                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout);
+                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout, long + 1);
                         }
                         return message;
                     };
@@ -144902,7 +150695,7 @@
                     this.methods = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -144978,9 +150771,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                SelectiveGapicGeneration.decode = function decode(reader, length, error) {
+                SelectiveGapicGeneration.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.SelectiveGapicGeneration();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -144998,7 +150795,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -145029,9 +150826,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                SelectiveGapicGeneration.verify = function verify(message) {
+                SelectiveGapicGeneration.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.methods != null && message.hasOwnProperty("methods")) {
                         if (!Array.isArray(message.methods))
                             return "methods: array expected";
@@ -145053,9 +150854,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
                  */
-                SelectiveGapicGeneration.fromObject = function fromObject(object) {
+                SelectiveGapicGeneration.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.SelectiveGapicGeneration)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.SelectiveGapicGeneration();
                     if (object.methods) {
                         if (!Array.isArray(object.methods))
@@ -145172,7 +150977,7 @@
                     this.routingParameters = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -145238,9 +151043,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                RoutingRule.decode = function decode(reader, length, error) {
+                RoutingRule.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RoutingRule();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -145250,11 +151059,11 @@
                         case 2: {
                                 if (!(message.routingParameters && message.routingParameters.length))
                                     message.routingParameters = [];
-                                message.routingParameters.push($root.google.api.RoutingParameter.decode(reader, reader.uint32()));
+                                message.routingParameters.push($root.google.api.RoutingParameter.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -145285,14 +151094,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                RoutingRule.verify = function verify(message) {
+                RoutingRule.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.routingParameters != null && message.hasOwnProperty("routingParameters")) {
                         if (!Array.isArray(message.routingParameters))
                             return "routingParameters: array expected";
                         for (var i = 0; i < message.routingParameters.length; ++i) {
-                            var error = $root.google.api.RoutingParameter.verify(message.routingParameters[i]);
+                            var error = $root.google.api.RoutingParameter.verify(message.routingParameters[i], long + 1);
                             if (error)
                                 return "routingParameters." + error;
                         }
@@ -145308,9 +151121,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.RoutingRule} RoutingRule
                  */
-                RoutingRule.fromObject = function fromObject(object) {
+                RoutingRule.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.RoutingRule)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.RoutingRule();
                     if (object.routingParameters) {
                         if (!Array.isArray(object.routingParameters))
@@ -145319,7 +151136,7 @@
                         for (var i = 0; i < object.routingParameters.length; ++i) {
                             if (typeof object.routingParameters[i] !== "object")
                                 throw TypeError(".google.api.RoutingRule.routingParameters: object expected");
-                            message.routingParameters[i] = $root.google.api.RoutingParameter.fromObject(object.routingParameters[i]);
+                            message.routingParameters[i] = $root.google.api.RoutingParameter.fromObject(object.routingParameters[i], long + 1);
                         }
                     }
                     return message;
@@ -145398,7 +151215,7 @@
                 function RoutingParameter(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -145473,9 +151290,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                RoutingParameter.decode = function decode(reader, length, error) {
+                RoutingParameter.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RoutingParameter();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -145491,7 +151312,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -145522,9 +151343,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                RoutingParameter.verify = function verify(message) {
+                RoutingParameter.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.field != null && message.hasOwnProperty("field"))
                         if (!$util.isString(message.field))
                             return "field: string expected";
@@ -145542,9 +151367,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.RoutingParameter} RoutingParameter
                  */
-                RoutingParameter.fromObject = function fromObject(object) {
+                RoutingParameter.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.RoutingParameter)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.RoutingParameter();
                     if (object.field != null)
                         message.field = String(object.field);
@@ -145639,7 +151468,7 @@
                     this.file = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -145705,9 +151534,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorSet.decode = function decode(reader, length, error) {
+                FileDescriptorSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -145717,11 +151550,11 @@
                         case 1: {
                                 if (!(message.file && message.file.length))
                                     message.file = [];
-                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32()));
+                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -145752,14 +151585,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorSet.verify = function verify(message) {
+                FileDescriptorSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.file != null && message.hasOwnProperty("file")) {
                         if (!Array.isArray(message.file))
                             return "file: array expected";
                         for (var i = 0; i < message.file.length; ++i) {
-                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]);
+                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i], long + 1);
                             if (error)
                                 return "file." + error;
                         }
@@ -145775,9 +151612,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet
                  */
-                FileDescriptorSet.fromObject = function fromObject(object) {
+                FileDescriptorSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorSet();
                     if (object.file) {
                         if (!Array.isArray(object.file))
@@ -145786,7 +151627,7 @@
                         for (var i = 0; i < object.file.length; ++i) {
                             if (typeof object.file[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected");
-                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]);
+                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i], long + 1);
                         }
                     }
                     return message;
@@ -145919,7 +151760,7 @@
                     this.extension = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -146122,9 +151963,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorProto.decode = function decode(reader, length, error) {
+                FileDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -146176,33 +152021,33 @@
                         case 4: {
                                 if (!(message.messageType && message.messageType.length))
                                     message.messageType = [];
-                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.service && message.service.length))
                                     message.service = [];
-                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32()));
+                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
-                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32());
+                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 12: {
@@ -146214,7 +152059,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -146245,9 +152090,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorProto.verify = function verify(message) {
+                FileDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -146286,7 +152135,7 @@
                         if (!Array.isArray(message.messageType))
                             return "messageType: array expected";
                         for (var i = 0; i < message.messageType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i], long + 1);
                             if (error)
                                 return "messageType." + error;
                         }
@@ -146295,7 +152144,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -146304,7 +152153,7 @@
                         if (!Array.isArray(message.service))
                             return "service: array expected";
                         for (var i = 0; i < message.service.length; ++i) {
-                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]);
+                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i], long + 1);
                             if (error)
                                 return "service." + error;
                         }
@@ -146313,18 +152162,18 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FileOptions.verify(message.options);
+                        var error = $root.google.protobuf.FileOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
                     if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) {
-                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo);
+                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo, long + 1);
                         if (error)
                             return "sourceCodeInfo." + error;
                     }
@@ -146360,9 +152209,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto
                  */
-                FileDescriptorProto.fromObject = function fromObject(object) {
+                FileDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -146403,7 +152256,7 @@
                         for (var i = 0; i < object.messageType.length; ++i) {
                             if (typeof object.messageType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected");
-                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]);
+                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -146413,7 +152266,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.service) {
@@ -146423,7 +152276,7 @@
                         for (var i = 0; i < object.service.length; ++i) {
                             if (typeof object.service[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected");
-                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]);
+                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -146433,18 +152286,18 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options, long + 1);
                     }
                     if (object.sourceCodeInfo != null) {
                         if (typeof object.sourceCodeInfo !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected");
-                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo);
+                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo, long + 1);
                     }
                     if (object.syntax != null)
                         message.syntax = String(object.syntax);
@@ -146660,7 +152513,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -146833,9 +152686,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DescriptorProto.decode = function decode(reader, length, error) {
+                DescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -146849,47 +152706,47 @@
                         case 2: {
                                 if (!(message.field && message.field.length))
                                     message.field = [];
-                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
                                 if (!(message.nestedType && message.nestedType.length))
                                     message.nestedType = [];
-                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.extensionRange && message.extensionRange.length))
                                     message.extensionRange = [];
-                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32()));
+                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
                                 if (!(message.oneofDecl && message.oneofDecl.length))
                                     message.oneofDecl = [];
-                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32()));
+                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
-                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 10: {
@@ -146903,7 +152760,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -146934,9 +152791,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DescriptorProto.verify = function verify(message) {
+                DescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -146944,7 +152805,7 @@
                         if (!Array.isArray(message.field))
                             return "field: array expected";
                         for (var i = 0; i < message.field.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i], long + 1);
                             if (error)
                                 return "field." + error;
                         }
@@ -146953,7 +152814,7 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
@@ -146962,7 +152823,7 @@
                         if (!Array.isArray(message.nestedType))
                             return "nestedType: array expected";
                         for (var i = 0; i < message.nestedType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i], long + 1);
                             if (error)
                                 return "nestedType." + error;
                         }
@@ -146971,7 +152832,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -146980,7 +152841,7 @@
                         if (!Array.isArray(message.extensionRange))
                             return "extensionRange: array expected";
                         for (var i = 0; i < message.extensionRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i], long + 1);
                             if (error)
                                 return "extensionRange." + error;
                         }
@@ -146989,13 +152850,13 @@
                         if (!Array.isArray(message.oneofDecl))
                             return "oneofDecl: array expected";
                         for (var i = 0; i < message.oneofDecl.length; ++i) {
-                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]);
+                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i], long + 1);
                             if (error)
                                 return "oneofDecl." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MessageOptions.verify(message.options);
+                        var error = $root.google.protobuf.MessageOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -147003,7 +152864,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -147035,9 +152896,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.DescriptorProto} DescriptorProto
                  */
-                DescriptorProto.fromObject = function fromObject(object) {
+                DescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.DescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.DescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -147048,7 +152913,7 @@
                         for (var i = 0; i < object.field.length; ++i) {
                             if (typeof object.field[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.field: object expected");
-                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]);
+                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -147058,7 +152923,7 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.nestedType) {
@@ -147068,7 +152933,7 @@
                         for (var i = 0; i < object.nestedType.length; ++i) {
                             if (typeof object.nestedType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected");
-                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]);
+                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -147078,7 +152943,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.extensionRange) {
@@ -147088,7 +152953,7 @@
                         for (var i = 0; i < object.extensionRange.length; ++i) {
                             if (typeof object.extensionRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected");
-                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]);
+                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i], long + 1);
                         }
                     }
                     if (object.oneofDecl) {
@@ -147098,13 +152963,13 @@
                         for (var i = 0; i < object.oneofDecl.length; ++i) {
                             if (typeof object.oneofDecl[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected");
-                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]);
+                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.DescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -147113,7 +152978,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -147271,7 +153136,7 @@
                     function ExtensionRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -147356,9 +153221,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ExtensionRange.decode = function decode(reader, length, error) {
+                    ExtensionRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -147374,11 +153243,11 @@
                                     break;
                                 }
                             case 3: {
-                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32());
+                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -147409,9 +153278,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ExtensionRange.verify = function verify(message) {
+                    ExtensionRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -147419,7 +153292,7 @@
                             if (!$util.isInteger(message.end))
                                 return "end: integer expected";
                         if (message.options != null && message.hasOwnProperty("options")) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options, long + 1);
                             if (error)
                                 return "options." + error;
                         }
@@ -147434,9 +153307,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange
                      */
-                    ExtensionRange.fromObject = function fromObject(object) {
+                    ExtensionRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -147445,7 +153322,7 @@
                         if (object.options != null) {
                             if (typeof object.options !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected");
-                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options);
+                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options, long + 1);
                         }
                         return message;
                     };
@@ -147527,7 +153404,7 @@
                     function ReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -147602,9 +153479,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ReservedRange.decode = function decode(reader, length, error) {
+                    ReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -147620,7 +153501,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -147651,9 +153532,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ReservedRange.verify = function verify(message) {
+                    ReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -147671,9 +153556,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange
                      */
-                    ReservedRange.fromObject = function fromObject(object) {
+                    ReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -147763,7 +153652,7 @@
                     this.declaration = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -147860,9 +153749,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ExtensionRangeOptions.decode = function decode(reader, length, error) {
+                ExtensionRangeOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -147872,17 +153765,17 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
                                 if (!(message.declaration && message.declaration.length))
                                     message.declaration = [];
-                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32()));
+                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -147890,7 +153783,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -147921,14 +153814,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ExtensionRangeOptions.verify = function verify(message) {
+                ExtensionRangeOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -147937,13 +153834,13 @@
                         if (!Array.isArray(message.declaration))
                             return "declaration: array expected";
                         for (var i = 0; i < message.declaration.length; ++i) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i]);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i], long + 1);
                             if (error)
                                 return "declaration." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -147966,9 +153863,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions
                  */
-                ExtensionRangeOptions.fromObject = function fromObject(object) {
+                ExtensionRangeOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ExtensionRangeOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ExtensionRangeOptions();
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -147977,7 +153878,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object.declaration) {
@@ -147987,13 +153888,13 @@
                         for (var i = 0; i < object.declaration.length; ++i) {
                             if (typeof object.declaration[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: object expected");
-                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i]);
+                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ExtensionRangeOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     switch (object.verification) {
                     case "DECLARATION":
@@ -148102,7 +154003,7 @@
                     function Declaration(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -148207,9 +154108,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Declaration.decode = function decode(reader, length, error) {
+                    Declaration.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -148237,7 +154142,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -148268,9 +154173,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Declaration.verify = function verify(message) {
+                    Declaration.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.number != null && message.hasOwnProperty("number"))
                             if (!$util.isInteger(message.number))
                                 return "number: integer expected";
@@ -148297,9 +154206,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration
                      */
-                    Declaration.fromObject = function fromObject(object) {
+                    Declaration.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.ExtensionRangeOptions.Declaration)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         if (object.number != null)
                             message.number = object.number | 0;
@@ -148423,7 +154336,7 @@
                 function FieldDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -148588,9 +154501,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldDescriptorProto.decode = function decode(reader, length, error) {
+                FieldDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -148634,7 +154551,7 @@
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 17: {
@@ -148642,7 +154559,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -148673,9 +154590,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldDescriptorProto.verify = function verify(message) {
+                FieldDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -148731,7 +154652,7 @@
                         if (!$util.isString(message.jsonName))
                             return "jsonName: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FieldOptions.verify(message.options);
+                        var error = $root.google.protobuf.FieldOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -148749,9 +154670,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto
                  */
-                FieldDescriptorProto.fromObject = function fromObject(object) {
+                FieldDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -148870,7 +154795,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options, long + 1);
                     }
                     if (object.proto3Optional != null)
                         message.proto3Optional = Boolean(object.proto3Optional);
@@ -149040,7 +154965,7 @@
                 function OneofDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -149115,9 +155040,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofDescriptorProto.decode = function decode(reader, length, error) {
+                OneofDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -149129,11 +155058,11 @@
                                 break;
                             }
                         case 2: {
-                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -149164,14 +155093,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofDescriptorProto.verify = function verify(message) {
+                OneofDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.OneofOptions.verify(message.options);
+                        var error = $root.google.protobuf.OneofOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -149186,16 +155119,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto
                  */
-                OneofDescriptorProto.fromObject = function fromObject(object) {
+                OneofDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -149281,7 +155218,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -149399,9 +155336,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumDescriptorProto.decode = function decode(reader, length, error) {
+                EnumDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -149415,17 +155356,17 @@
                         case 2: {
                                 if (!(message.value && message.value.length))
                                     message.value = [];
-                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32()));
+                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 4: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
@@ -149439,7 +155380,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -149470,9 +155411,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumDescriptorProto.verify = function verify(message) {
+                EnumDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -149480,13 +155425,13 @@
                         if (!Array.isArray(message.value))
                             return "value: array expected";
                         for (var i = 0; i < message.value.length; ++i) {
-                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]);
+                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i], long + 1);
                             if (error)
                                 return "value." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -149494,7 +155439,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -149526,9 +155471,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto
                  */
-                EnumDescriptorProto.fromObject = function fromObject(object) {
+                EnumDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -149539,13 +155488,13 @@
                         for (var i = 0; i < object.value.length; ++i) {
                             if (typeof object.value[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected");
-                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]);
+                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -149554,7 +155503,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -149681,7 +155630,7 @@
                     function EnumReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -149756,9 +155705,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EnumReservedRange.decode = function decode(reader, length, error) {
+                    EnumReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -149774,7 +155727,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -149805,9 +155758,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EnumReservedRange.verify = function verify(message) {
+                    EnumReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -149825,9 +155782,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange
                      */
-                    EnumReservedRange.fromObject = function fromObject(object) {
+                    EnumReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -149914,7 +155875,7 @@
                 function EnumValueDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -149999,9 +155960,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueDescriptorProto.decode = function decode(reader, length, error) {
+                EnumValueDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -150017,11 +155982,11 @@
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -150052,9 +156017,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueDescriptorProto.verify = function verify(message) {
+                EnumValueDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -150062,7 +156031,7 @@
                         if (!$util.isInteger(message.number))
                             return "number: integer expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -150077,9 +156046,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto
                  */
-                EnumValueDescriptorProto.fromObject = function fromObject(object) {
+                EnumValueDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -150088,7 +156061,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -150172,7 +156145,7 @@
                     this.method = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -150258,9 +156231,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceDescriptorProto.decode = function decode(reader, length, error) {
+                ServiceDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -150274,15 +156251,15 @@
                         case 2: {
                                 if (!(message.method && message.method.length))
                                     message.method = [];
-                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32()));
+                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -150313,9 +156290,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceDescriptorProto.verify = function verify(message) {
+                ServiceDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -150323,13 +156304,13 @@
                         if (!Array.isArray(message.method))
                             return "method: array expected";
                         for (var i = 0; i < message.method.length; ++i) {
-                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]);
+                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i], long + 1);
                             if (error)
                                 return "method." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.ServiceOptions.verify(message.options);
+                        var error = $root.google.protobuf.ServiceOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -150344,9 +156325,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto
                  */
-                ServiceDescriptorProto.fromObject = function fromObject(object) {
+                ServiceDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -150357,13 +156342,13 @@
                         for (var i = 0; i < object.method.length; ++i) {
                             if (typeof object.method[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected");
-                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]);
+                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -150453,7 +156438,7 @@
                 function MethodDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -150568,9 +156553,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodDescriptorProto.decode = function decode(reader, length, error) {
+                MethodDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -150590,7 +156579,7 @@
                                 break;
                             }
                         case 4: {
-                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 5: {
@@ -150602,7 +156591,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -150633,9 +156622,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodDescriptorProto.verify = function verify(message) {
+                MethodDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -150646,7 +156639,7 @@
                         if (!$util.isString(message.outputType))
                             return "outputType: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MethodOptions.verify(message.options);
+                        var error = $root.google.protobuf.MethodOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -150667,9 +156660,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto
                  */
-                MethodDescriptorProto.fromObject = function fromObject(object) {
+                MethodDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -150680,7 +156677,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options, long + 1);
                     }
                     if (object.clientStreaming != null)
                         message.clientStreaming = Boolean(object.clientStreaming);
@@ -150797,7 +156794,7 @@
                     this[".google.api.resourceDefinition"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -151074,9 +157071,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileOptions.decode = function decode(reader, length, error) {
+                FileOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -151160,23 +157161,23 @@
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
                                 if (!(message[".google.api.resourceDefinition"] && message[".google.api.resourceDefinition"].length))
                                     message[".google.api.resourceDefinition"] = [];
-                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32()));
+                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -151207,9 +157208,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileOptions.verify = function verify(message) {
+                FileOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.javaPackage != null && message.hasOwnProperty("javaPackage"))
                         if (!$util.isString(message.javaPackage))
                             return "javaPackage: string expected";
@@ -151274,7 +157279,7 @@
                         if (!$util.isString(message.rubyPackage))
                             return "rubyPackage: string expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -151282,7 +157287,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -151291,7 +157296,7 @@
                         if (!Array.isArray(message[".google.api.resourceDefinition"]))
                             return ".google.api.resourceDefinition: array expected";
                         for (var i = 0; i < message[".google.api.resourceDefinition"].length; ++i) {
-                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i]);
+                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i], long + 1);
                             if (error)
                                 return ".google.api.resourceDefinition." + error;
                         }
@@ -151307,9 +157312,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileOptions} FileOptions
                  */
-                FileOptions.fromObject = function fromObject(object) {
+                FileOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileOptions();
                     if (object.javaPackage != null)
                         message.javaPackage = String(object.javaPackage);
@@ -151370,7 +157379,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FileOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -151379,7 +157388,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resourceDefinition"]) {
@@ -151389,7 +157398,7 @@
                         for (var i = 0; i < object[".google.api.resourceDefinition"].length; ++i) {
                             if (typeof object[".google.api.resourceDefinition"][i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions..google.api.resourceDefinition: object expected");
-                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i]);
+                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i], long + 1);
                         }
                     }
                     return message;
@@ -151560,7 +157569,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -151696,9 +157705,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MessageOptions.decode = function decode(reader, length, error) {
+                MessageOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -151726,21 +157739,21 @@
                                 break;
                             }
                         case 12: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
-                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32());
+                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -151771,9 +157784,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MessageOptions.verify = function verify(message) {
+                MessageOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat"))
                         if (typeof message.messageSetWireFormat !== "boolean")
                             return "messageSetWireFormat: boolean expected";
@@ -151790,7 +157807,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -151798,13 +157815,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.resource"] != null && message.hasOwnProperty(".google.api.resource")) {
-                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"]);
+                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"], long + 1);
                         if (error)
                             return ".google.api.resource." + error;
                     }
@@ -151819,9 +157836,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MessageOptions} MessageOptions
                  */
-                MessageOptions.fromObject = function fromObject(object) {
+                MessageOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MessageOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MessageOptions();
                     if (object.messageSetWireFormat != null)
                         message.messageSetWireFormat = Boolean(object.messageSetWireFormat);
@@ -151836,7 +157857,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MessageOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -151845,13 +157866,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resource"] != null) {
                         if (typeof object[".google.api.resource"] !== "object")
                             throw TypeError(".google.protobuf.MessageOptions..google.api.resource: object expected");
-                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"]);
+                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"], long + 1);
                     }
                     return message;
                 };
@@ -151971,7 +157992,7 @@
                     this[".google.api.fieldBehavior"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -152200,9 +158221,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldOptions.decode = function decode(reader, length, error) {
+                FieldOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -152259,25 +158284,25 @@
                         case 20: {
                                 if (!(message.editionDefaults && message.editionDefaults.length))
                                     message.editionDefaults = [];
-                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32()));
+                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 21: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 22: {
-                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32());
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1055: {
-                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32());
+                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 1052: {
@@ -152292,11 +158317,11 @@
                                 break;
                             }
                         case 291403980: {
-                                message[".google.api.fieldInfo"] = $root.google.api.FieldInfo.decode(reader, reader.uint32());
+                                message[".google.api.fieldInfo"] = $root.google.api.FieldInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -152327,9 +158352,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldOptions.verify = function verify(message) {
+                FieldOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
                         switch (message.ctype) {
                         default:
@@ -152399,18 +158428,18 @@
                         if (!Array.isArray(message.editionDefaults))
                             return "editionDefaults: array expected";
                         for (var i = 0; i < message.editionDefaults.length; ++i) {
-                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i]);
+                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i], long + 1);
                             if (error)
                                 return "editionDefaults." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
                     if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
-                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport);
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
                         if (error)
                             return "featureSupport." + error;
                     }
@@ -152418,13 +158447,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.resourceReference"] != null && message.hasOwnProperty(".google.api.resourceReference")) {
-                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"]);
+                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"], long + 1);
                         if (error)
                             return ".google.api.resourceReference." + error;
                     }
@@ -152448,7 +158477,7 @@
                             }
                     }
                     if (message[".google.api.fieldInfo"] != null && message.hasOwnProperty(".google.api.fieldInfo")) {
-                        var error = $root.google.api.FieldInfo.verify(message[".google.api.fieldInfo"]);
+                        var error = $root.google.api.FieldInfo.verify(message[".google.api.fieldInfo"], long + 1);
                         if (error)
                             return ".google.api.fieldInfo." + error;
                     }
@@ -152463,9 +158492,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldOptions} FieldOptions
                  */
-                FieldOptions.fromObject = function fromObject(object) {
+                FieldOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldOptions();
                     switch (object.ctype) {
                     default:
@@ -152599,18 +158632,18 @@
                         for (var i = 0; i < object.editionDefaults.length; ++i) {
                             if (typeof object.editionDefaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.editionDefaults: object expected");
-                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i]);
+                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FieldOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.featureSupport != null) {
                         if (typeof object.featureSupport !== "object")
                             throw TypeError(".google.protobuf.FieldOptions.featureSupport: object expected");
-                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport);
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -152619,13 +158652,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resourceReference"] != null) {
                         if (typeof object[".google.api.resourceReference"] !== "object")
                             throw TypeError(".google.protobuf.FieldOptions..google.api.resourceReference: object expected");
-                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"]);
+                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"], long + 1);
                     }
                     if (object[".google.api.fieldBehavior"]) {
                         if (!Array.isArray(object[".google.api.fieldBehavior"]))
@@ -152679,7 +158712,7 @@
                     if (object[".google.api.fieldInfo"] != null) {
                         if (typeof object[".google.api.fieldInfo"] !== "object")
                             throw TypeError(".google.protobuf.FieldOptions..google.api.fieldInfo: object expected");
-                        message[".google.api.fieldInfo"] = $root.google.api.FieldInfo.fromObject(object[".google.api.fieldInfo"]);
+                        message[".google.api.fieldInfo"] = $root.google.api.FieldInfo.fromObject(object[".google.api.fieldInfo"], long + 1);
                     }
                     return message;
                 };
@@ -152892,7 +158925,7 @@
                     function EditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -152967,9 +159000,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EditionDefault.decode = function decode(reader, length, error) {
+                    EditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -152985,7 +159022,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -153016,9 +159053,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EditionDefault.verify = function verify(message) {
+                    EditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
@@ -153051,9 +159092,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault
                      */
-                    EditionDefault.fromObject = function fromObject(object) {
+                    EditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         switch (object.edition) {
                         default:
@@ -153192,7 +159237,7 @@
                     function FeatureSupport(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -153287,9 +159332,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    FeatureSupport.decode = function decode(reader, length, error) {
+                    FeatureSupport.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.FeatureSupport();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -153313,7 +159362,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -153344,9 +159393,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    FeatureSupport.verify = function verify(message) {
+                    FeatureSupport.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
                             switch (message.editionIntroduced) {
                             default:
@@ -153415,9 +159468,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
                      */
-                    FeatureSupport.fromObject = function fromObject(object) {
+                    FeatureSupport.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FieldOptions.FeatureSupport)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FieldOptions.FeatureSupport();
                         switch (object.editionIntroduced) {
                         default:
@@ -153676,7 +159733,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -153752,9 +159809,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofOptions.decode = function decode(reader, length, error) {
+                OneofOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -153762,17 +159823,17 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -153803,11 +159864,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofOptions.verify = function verify(message) {
+                OneofOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -153815,7 +159880,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -153831,14 +159896,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofOptions} OneofOptions
                  */
-                OneofOptions.fromObject = function fromObject(object) {
+                OneofOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.OneofOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -153847,7 +159916,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -153934,7 +160003,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -154040,9 +160109,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumOptions.decode = function decode(reader, length, error) {
+                EnumOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -154062,17 +160135,17 @@
                                 break;
                             }
                         case 7: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -154103,9 +160176,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumOptions.verify = function verify(message) {
+                EnumOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.allowAlias != null && message.hasOwnProperty("allowAlias"))
                         if (typeof message.allowAlias !== "boolean")
                             return "allowAlias: boolean expected";
@@ -154116,7 +160193,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -154124,7 +160201,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -154140,9 +160217,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumOptions} EnumOptions
                  */
-                EnumOptions.fromObject = function fromObject(object) {
+                EnumOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumOptions();
                     if (object.allowAlias != null)
                         message.allowAlias = Boolean(object.allowAlias);
@@ -154153,7 +160234,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -154162,7 +160243,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -154259,7 +160340,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -154365,9 +160446,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueOptions.decode = function decode(reader, length, error) {
+                EnumValueOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -154379,7 +160464,7 @@
                                 break;
                             }
                         case 2: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -154387,17 +160472,17 @@
                                 break;
                             }
                         case 4: {
-                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32());
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -154428,14 +160513,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueOptions.verify = function verify(message) {
+                EnumValueOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -154443,7 +160532,7 @@
                         if (typeof message.debugRedact !== "boolean")
                             return "debugRedact: boolean expected";
                     if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
-                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport);
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
                         if (error)
                             return "featureSupport." + error;
                     }
@@ -154451,7 +160540,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -154467,23 +160556,27 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueOptions} EnumValueOptions
                  */
-                EnumValueOptions.fromObject = function fromObject(object) {
+                EnumValueOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumValueOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.debugRedact != null)
                         message.debugRedact = Boolean(object.debugRedact);
                     if (object.featureSupport != null) {
                         if (typeof object.featureSupport !== "object")
                             throw TypeError(".google.protobuf.EnumValueOptions.featureSupport: object expected");
-                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport);
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -154492,7 +160585,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -154590,7 +160683,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -154706,9 +160799,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceOptions.decode = function decode(reader, length, error) {
+                ServiceOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -154716,7 +160813,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 34: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 33: {
@@ -154726,7 +160823,7 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1049: {
@@ -154742,7 +160839,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -154773,11 +160870,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceOptions.verify = function verify(message) {
+                ServiceOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -154788,7 +160889,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -154813,14 +160914,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceOptions} ServiceOptions
                  */
-                ServiceOptions.fromObject = function fromObject(object) {
+                ServiceOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ServiceOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -154831,7 +160936,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.defaultHost"] != null)
@@ -154941,7 +161046,7 @@
                     this[".google.api.methodSignature"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -155078,9 +161183,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodOptions.decode = function decode(reader, length, error) {
+                MethodOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -155096,17 +161205,17 @@
                                 break;
                             }
                         case 35: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 72295728: {
-                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32());
+                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 1051: {
@@ -155116,15 +161225,15 @@
                                 break;
                             }
                         case 1049: {
-                                message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32());
+                                message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 72295729: {
-                                message[".google.api.routing"] = $root.google.api.RoutingRule.decode(reader, reader.uint32());
+                                message[".google.api.routing"] = $root.google.api.RoutingRule.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -155155,9 +161264,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodOptions.verify = function verify(message) {
+                MethodOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
@@ -155171,7 +161284,7 @@
                             break;
                         }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -155179,13 +161292,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) {
-                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"]);
+                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"], long + 1);
                         if (error)
                             return ".google.api.http." + error;
                     }
@@ -155197,12 +161310,12 @@
                                 return ".google.api.methodSignature: string[] expected";
                     }
                     if (message[".google.longrunning.operationInfo"] != null && message.hasOwnProperty(".google.longrunning.operationInfo")) {
-                        var error = $root.google.longrunning.OperationInfo.verify(message[".google.longrunning.operationInfo"]);
+                        var error = $root.google.longrunning.OperationInfo.verify(message[".google.longrunning.operationInfo"], long + 1);
                         if (error)
                             return ".google.longrunning.operationInfo." + error;
                     }
                     if (message[".google.api.routing"] != null && message.hasOwnProperty(".google.api.routing")) {
-                        var error = $root.google.api.RoutingRule.verify(message[".google.api.routing"]);
+                        var error = $root.google.api.RoutingRule.verify(message[".google.api.routing"], long + 1);
                         if (error)
                             return ".google.api.routing." + error;
                     }
@@ -155217,9 +161330,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodOptions} MethodOptions
                  */
-                MethodOptions.fromObject = function fromObject(object) {
+                MethodOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -155246,7 +161363,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MethodOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -155255,13 +161372,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.http"] != null) {
                         if (typeof object[".google.api.http"] !== "object")
                             throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected");
-                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]);
+                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"], long + 1);
                     }
                     if (object[".google.api.methodSignature"]) {
                         if (!Array.isArray(object[".google.api.methodSignature"]))
@@ -155273,12 +161390,12 @@
                     if (object[".google.longrunning.operationInfo"] != null) {
                         if (typeof object[".google.longrunning.operationInfo"] !== "object")
                             throw TypeError(".google.protobuf.MethodOptions..google.longrunning.operationInfo: object expected");
-                        message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.fromObject(object[".google.longrunning.operationInfo"]);
+                        message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.fromObject(object[".google.longrunning.operationInfo"], long + 1);
                     }
                     if (object[".google.api.routing"] != null) {
                         if (typeof object[".google.api.routing"] !== "object")
                             throw TypeError(".google.protobuf.MethodOptions..google.api.routing: object expected");
-                        message[".google.api.routing"] = $root.google.api.RoutingRule.fromObject(object[".google.api.routing"]);
+                        message[".google.api.routing"] = $root.google.api.RoutingRule.fromObject(object[".google.api.routing"], long + 1);
                     }
                     return message;
                 };
@@ -155405,7 +161522,7 @@
                     this.name = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -155531,9 +161648,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                UninterpretedOption.decode = function decode(reader, length, error) {
+                UninterpretedOption.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -155543,7 +161664,7 @@
                         case 2: {
                                 if (!(message.name && message.name.length))
                                     message.name = [];
-                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32()));
+                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
@@ -155571,7 +161692,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -155602,14 +161723,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                UninterpretedOption.verify = function verify(message) {
+                UninterpretedOption.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name")) {
                         if (!Array.isArray(message.name))
                             return "name: array expected";
                         for (var i = 0; i < message.name.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i], long + 1);
                             if (error)
                                 return "name." + error;
                         }
@@ -155643,9 +161768,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.UninterpretedOption} UninterpretedOption
                  */
-                UninterpretedOption.fromObject = function fromObject(object) {
+                UninterpretedOption.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.UninterpretedOption)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.UninterpretedOption();
                     if (object.name) {
                         if (!Array.isArray(object.name))
@@ -155654,7 +161783,7 @@
                         for (var i = 0; i < object.name.length; ++i) {
                             if (typeof object.name[i] !== "object")
                                 throw TypeError(".google.protobuf.UninterpretedOption.name: object expected");
-                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]);
+                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i], long + 1);
                         }
                     }
                     if (object.identifierValue != null)
@@ -155799,7 +161928,7 @@
                     function NamePart(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -155872,9 +162001,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    NamePart.decode = function decode(reader, length, error) {
+                    NamePart.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -155890,7 +162023,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -155925,9 +162058,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    NamePart.verify = function verify(message) {
+                    NamePart.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (!$util.isString(message.namePart))
                             return "namePart: string expected";
                         if (typeof message.isExtension !== "boolean")
@@ -155943,9 +162080,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
                      */
-                    NamePart.fromObject = function fromObject(object) {
+                    NamePart.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         if (object.namePart != null)
                             message.namePart = String(object.namePart);
@@ -156037,7 +162178,7 @@
                 function FeatureSet(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -156172,9 +162313,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSet.decode = function decode(reader, length, error) {
+                FeatureSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -156214,7 +162359,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -156245,9 +162390,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSet.verify = function verify(message) {
+                FeatureSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
                         switch (message.fieldPresence) {
                         default:
@@ -156334,9 +162483,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSet} FeatureSet
                  */
-                FeatureSet.fromObject = function fromObject(object) {
+                FeatureSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSet();
                     switch (object.fieldPresence) {
                     default:
@@ -156714,7 +162867,7 @@
                     function VisibilityFeature(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -156769,9 +162922,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    VisibilityFeature.decode = function decode(reader, length, error) {
+                    VisibilityFeature.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet.VisibilityFeature();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -156779,7 +162936,7 @@
                                 break;
                             switch (tag >>> 3) {
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -156810,9 +162967,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    VisibilityFeature.verify = function verify(message) {
+                    VisibilityFeature.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         return null;
                     };
     
@@ -156824,9 +162985,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
                      */
-                    VisibilityFeature.fromObject = function fromObject(object) {
+                    VisibilityFeature.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FeatureSet.VisibilityFeature)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         return new $root.google.protobuf.FeatureSet.VisibilityFeature();
                     };
     
@@ -156918,7 +163083,7 @@
                     this.defaults = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -157004,9 +163169,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSetDefaults.decode = function decode(reader, length, error) {
+                FeatureSetDefaults.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -157016,7 +163185,7 @@
                         case 1: {
                                 if (!(message.defaults && message.defaults.length))
                                     message.defaults = [];
-                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32()));
+                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
@@ -157028,7 +163197,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -157059,14 +163228,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSetDefaults.verify = function verify(message) {
+                FeatureSetDefaults.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.defaults != null && message.hasOwnProperty("defaults")) {
                         if (!Array.isArray(message.defaults))
                             return "defaults: array expected";
                         for (var i = 0; i < message.defaults.length; ++i) {
-                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i]);
+                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i], long + 1);
                             if (error)
                                 return "defaults." + error;
                         }
@@ -157118,9 +163291,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults
                  */
-                FeatureSetDefaults.fromObject = function fromObject(object) {
+                FeatureSetDefaults.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSetDefaults)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSetDefaults();
                     if (object.defaults) {
                         if (!Array.isArray(object.defaults))
@@ -157129,7 +163306,7 @@
                         for (var i = 0; i < object.defaults.length; ++i) {
                             if (typeof object.defaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: object expected");
-                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i]);
+                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i], long + 1);
                         }
                     }
                     switch (object.minimumEdition) {
@@ -157326,7 +163503,7 @@
                     function FeatureSetEditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -157411,9 +163588,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    FeatureSetEditionDefault.decode = function decode(reader, length, error) {
+                    FeatureSetEditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -157425,15 +163606,15 @@
                                     break;
                                 }
                             case 4: {
-                                    message.overridableFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                    message.overridableFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 5: {
-                                    message.fixedFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                    message.fixedFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -157464,9 +163645,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    FeatureSetEditionDefault.verify = function verify(message) {
+                    FeatureSetEditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
@@ -157486,12 +163671,12 @@
                                 break;
                             }
                         if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) {
-                            var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures);
+                            var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures, long + 1);
                             if (error)
                                 return "overridableFeatures." + error;
                         }
                         if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) {
-                            var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures);
+                            var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures, long + 1);
                             if (error)
                                 return "fixedFeatures." + error;
                         }
@@ -157506,9 +163691,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault
                      */
-                    FeatureSetEditionDefault.fromObject = function fromObject(object) {
+                    FeatureSetEditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         switch (object.edition) {
                         default:
@@ -157569,12 +163758,12 @@
                         if (object.overridableFeatures != null) {
                             if (typeof object.overridableFeatures !== "object")
                                 throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridableFeatures: object expected");
-                            message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures);
+                            message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures, long + 1);
                         }
                         if (object.fixedFeatures != null) {
                             if (typeof object.fixedFeatures !== "object")
                                 throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixedFeatures: object expected");
-                            message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures);
+                            message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures, long + 1);
                         }
                         return message;
                     };
@@ -157659,7 +163848,7 @@
                     this.location = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -157725,9 +163914,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                SourceCodeInfo.decode = function decode(reader, length, error) {
+                SourceCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -157737,11 +163930,11 @@
                         case 1: {
                                 if (!(message.location && message.location.length))
                                     message.location = [];
-                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32()));
+                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -157772,14 +163965,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                SourceCodeInfo.verify = function verify(message) {
+                SourceCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.location != null && message.hasOwnProperty("location")) {
                         if (!Array.isArray(message.location))
                             return "location: array expected";
                         for (var i = 0; i < message.location.length; ++i) {
-                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]);
+                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i], long + 1);
                             if (error)
                                 return "location." + error;
                         }
@@ -157795,9 +163992,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo
                  */
-                SourceCodeInfo.fromObject = function fromObject(object) {
+                SourceCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.SourceCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.SourceCodeInfo();
                     if (object.location) {
                         if (!Array.isArray(object.location))
@@ -157806,7 +164007,7 @@
                         for (var i = 0; i < object.location.length; ++i) {
                             if (typeof object.location[i] !== "object")
                                 throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected");
-                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]);
+                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i], long + 1);
                         }
                     }
                     return message;
@@ -157888,7 +164089,7 @@
                         this.leadingDetachedComments = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -158002,9 +164203,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Location.decode = function decode(reader, length, error) {
+                    Location.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -158048,7 +164253,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -158079,9 +164284,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Location.verify = function verify(message) {
+                    Location.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -158120,9 +164329,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.SourceCodeInfo.Location} Location
                      */
-                    Location.fromObject = function fromObject(object) {
+                    Location.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.SourceCodeInfo.Location)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.SourceCodeInfo.Location();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -158249,7 +164462,7 @@
                     this.annotation = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -158315,9 +164528,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GeneratedCodeInfo.decode = function decode(reader, length, error) {
+                GeneratedCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -158327,11 +164544,11 @@
                         case 1: {
                                 if (!(message.annotation && message.annotation.length))
                                     message.annotation = [];
-                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32()));
+                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -158362,14 +164579,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GeneratedCodeInfo.verify = function verify(message) {
+                GeneratedCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.annotation != null && message.hasOwnProperty("annotation")) {
                         if (!Array.isArray(message.annotation))
                             return "annotation: array expected";
                         for (var i = 0; i < message.annotation.length; ++i) {
-                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]);
+                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i], long + 1);
                             if (error)
                                 return "annotation." + error;
                         }
@@ -158385,9 +164606,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo
                  */
-                GeneratedCodeInfo.fromObject = function fromObject(object) {
+                GeneratedCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.GeneratedCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.GeneratedCodeInfo();
                     if (object.annotation) {
                         if (!Array.isArray(object.annotation))
@@ -158396,7 +164621,7 @@
                         for (var i = 0; i < object.annotation.length; ++i) {
                             if (typeof object.annotation[i] !== "object")
                                 throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected");
-                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]);
+                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i], long + 1);
                         }
                     }
                     return message;
@@ -158476,7 +164701,7 @@
                         this.path = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -158585,9 +164810,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Annotation.decode = function decode(reader, length, error) {
+                    Annotation.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -158622,7 +164851,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -158653,9 +164882,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Annotation.verify = function verify(message) {
+                    Annotation.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -158692,9 +164925,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation
                      */
-                    Annotation.fromObject = function fromObject(object) {
+                    Annotation.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -158854,7 +165091,7 @@
                     this.fields = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -158922,9 +165159,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Struct.decode = function decode(reader, length, error) {
+                Struct.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Struct(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -158944,18 +165185,20 @@
                                         key = reader.string();
                                         break;
                                     case 2:
-                                        value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                        value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.fields, key);
                                 message.fields[key] = value;
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -158986,15 +165229,19 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Struct.verify = function verify(message) {
+                Struct.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.fields != null && message.hasOwnProperty("fields")) {
                         if (!$util.isObject(message.fields))
                             return "fields: object expected";
                         var key = Object.keys(message.fields);
                         for (var i = 0; i < key.length; ++i) {
-                            var error = $root.google.protobuf.Value.verify(message.fields[key[i]]);
+                            var error = $root.google.protobuf.Value.verify(message.fields[key[i]], long + 1);
                             if (error)
                                 return "fields." + error;
                         }
@@ -159010,18 +165257,24 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Struct} Struct
                  */
-                Struct.fromObject = function fromObject(object) {
+                Struct.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Struct)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Struct();
                     if (object.fields) {
                         if (typeof object.fields !== "object")
                             throw TypeError(".google.protobuf.Struct.fields: object expected");
                         message.fields = {};
                         for (var keys = Object.keys(object.fields), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.fields, keys[i]);
                             if (typeof object.fields[keys[i]] !== "object")
                                 throw TypeError(".google.protobuf.Struct.fields: object expected");
-                            message.fields[keys[i]] = $root.google.protobuf.Value.fromObject(object.fields[keys[i]]);
+                            message.fields[keys[i]] = $root.google.protobuf.Value.fromObject(object.fields[keys[i]], long + 1);
                         }
                     }
                     return message;
@@ -159045,8 +165298,11 @@
                     var keys2;
                     if (message.fields && (keys2 = Object.keys(message.fields)).length) {
                         object.fields = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.fields, keys2[j]);
                             object.fields[keys2[j]] = $root.google.protobuf.Value.toObject(message.fields[keys2[j]], options);
+                        }
                     }
                     return object;
                 };
@@ -159105,7 +165361,7 @@
                 function Value(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -159234,9 +165490,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Value.decode = function decode(reader, length, error) {
+                Value.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Value();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -159260,15 +165520,15 @@
                                 break;
                             }
                         case 5: {
-                                message.structValue = $root.google.protobuf.Struct.decode(reader, reader.uint32());
+                                message.structValue = $root.google.protobuf.Struct.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 6: {
-                                message.listValue = $root.google.protobuf.ListValue.decode(reader, reader.uint32());
+                                message.listValue = $root.google.protobuf.ListValue.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -159299,9 +165559,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Value.verify = function verify(message) {
+                Value.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     var properties = {};
                     if (message.nullValue != null && message.hasOwnProperty("nullValue")) {
                         properties.kind = 1;
@@ -159338,7 +165602,7 @@
                             return "kind: multiple values";
                         properties.kind = 1;
                         {
-                            var error = $root.google.protobuf.Struct.verify(message.structValue);
+                            var error = $root.google.protobuf.Struct.verify(message.structValue, long + 1);
                             if (error)
                                 return "structValue." + error;
                         }
@@ -159348,7 +165612,7 @@
                             return "kind: multiple values";
                         properties.kind = 1;
                         {
-                            var error = $root.google.protobuf.ListValue.verify(message.listValue);
+                            var error = $root.google.protobuf.ListValue.verify(message.listValue, long + 1);
                             if (error)
                                 return "listValue." + error;
                         }
@@ -159364,9 +165628,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Value} Value
                  */
-                Value.fromObject = function fromObject(object) {
+                Value.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Value)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Value();
                     switch (object.nullValue) {
                     default:
@@ -159389,12 +165657,12 @@
                     if (object.structValue != null) {
                         if (typeof object.structValue !== "object")
                             throw TypeError(".google.protobuf.Value.structValue: object expected");
-                        message.structValue = $root.google.protobuf.Struct.fromObject(object.structValue);
+                        message.structValue = $root.google.protobuf.Struct.fromObject(object.structValue, long + 1);
                     }
                     if (object.listValue != null) {
                         if (typeof object.listValue !== "object")
                             throw TypeError(".google.protobuf.Value.listValue: object expected");
-                        message.listValue = $root.google.protobuf.ListValue.fromObject(object.listValue);
+                        message.listValue = $root.google.protobuf.ListValue.fromObject(object.listValue, long + 1);
                     }
                     return message;
                 };
@@ -159507,7 +165775,7 @@
                     this.values = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -159573,9 +165841,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ListValue.decode = function decode(reader, length, error) {
+                ListValue.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ListValue();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -159585,11 +165857,11 @@
                         case 1: {
                                 if (!(message.values && message.values.length))
                                     message.values = [];
-                                message.values.push($root.google.protobuf.Value.decode(reader, reader.uint32()));
+                                message.values.push($root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -159620,14 +165892,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ListValue.verify = function verify(message) {
+                ListValue.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.values != null && message.hasOwnProperty("values")) {
                         if (!Array.isArray(message.values))
                             return "values: array expected";
                         for (var i = 0; i < message.values.length; ++i) {
-                            var error = $root.google.protobuf.Value.verify(message.values[i]);
+                            var error = $root.google.protobuf.Value.verify(message.values[i], long + 1);
                             if (error)
                                 return "values." + error;
                         }
@@ -159643,9 +165919,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ListValue} ListValue
                  */
-                ListValue.fromObject = function fromObject(object) {
+                ListValue.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ListValue)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ListValue();
                     if (object.values) {
                         if (!Array.isArray(object.values))
@@ -159654,7 +165934,7 @@
                         for (var i = 0; i < object.values.length; ++i) {
                             if (typeof object.values[i] !== "object")
                                 throw TypeError(".google.protobuf.ListValue.values: object expected");
-                            message.values[i] = $root.google.protobuf.Value.fromObject(object.values[i]);
+                            message.values[i] = $root.google.protobuf.Value.fromObject(object.values[i], long + 1);
                         }
                     }
                     return message;
@@ -159733,7 +166013,7 @@
                 function Timestamp(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -159808,9 +166088,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Timestamp.decode = function decode(reader, length, error) {
+                Timestamp.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -159826,7 +166110,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -159857,9 +166141,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Timestamp.verify = function verify(message) {
+                Timestamp.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -159877,9 +166165,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Timestamp} Timestamp
                  */
-                Timestamp.fromObject = function fromObject(object) {
+                Timestamp.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Timestamp)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Timestamp();
                     if (object.seconds != null)
                         if ($util.Long)
@@ -159976,7 +166268,7 @@
                 function Duration(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -160051,9 +166343,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Duration.decode = function decode(reader, length, error) {
+                Duration.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Duration();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -160069,7 +166365,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -160100,9 +166396,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Duration.verify = function verify(message) {
+                Duration.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -160120,9 +166420,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Duration} Duration
                  */
-                Duration.fromObject = function fromObject(object) {
+                Duration.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Duration)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Duration();
                     if (object.seconds != null)
                         if ($util.Long)
@@ -160219,7 +166523,7 @@
                     this.paths = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -160285,9 +166589,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldMask.decode = function decode(reader, length, error) {
+                FieldMask.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldMask();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -160301,7 +166609,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -160332,9 +166640,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldMask.verify = function verify(message) {
+                FieldMask.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.paths != null && message.hasOwnProperty("paths")) {
                         if (!Array.isArray(message.paths))
                             return "paths: array expected";
@@ -160353,9 +166665,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldMask} FieldMask
                  */
-                FieldMask.fromObject = function fromObject(object) {
+                FieldMask.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldMask)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldMask();
                     if (object.paths) {
                         if (!Array.isArray(object.paths))
@@ -160440,7 +166756,7 @@
                 function Any(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -160515,9 +166831,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Any.decode = function decode(reader, length, error) {
+                Any.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Any();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -160533,7 +166853,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -160564,9 +166884,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Any.verify = function verify(message) {
+                Any.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type_url != null && message.hasOwnProperty("type_url"))
                         if (!$util.isString(message.type_url))
                             return "type_url: string expected";
@@ -160584,9 +166908,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Any} Any
                  */
-                Any.fromObject = function fromObject(object) {
+                Any.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Any)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Any();
                     if (object.type_url != null)
                         message.type_url = String(object.type_url);
@@ -160676,7 +167004,7 @@
                 function Empty(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -160731,9 +167059,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Empty.decode = function decode(reader, length, error) {
+                Empty.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Empty();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -160741,7 +167073,7 @@
                             break;
                         switch (tag >>> 3) {
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -160772,9 +167104,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Empty.verify = function verify(message) {
+                Empty.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     return null;
                 };
     
@@ -160786,9 +167122,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Empty} Empty
                  */
-                Empty.fromObject = function fromObject(object) {
+                Empty.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Empty)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     return new $root.google.protobuf.Empty();
                 };
     
@@ -160869,7 +167209,7 @@
                 function Expr(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -160964,9 +167304,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Expr.decode = function decode(reader, length, error) {
+                Expr.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.Expr();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -160990,7 +167334,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -161021,9 +167365,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Expr.verify = function verify(message) {
+                Expr.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.expression != null && message.hasOwnProperty("expression"))
                         if (!$util.isString(message.expression))
                             return "expression: string expected";
@@ -161047,9 +167395,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.type.Expr} Expr
                  */
-                Expr.fromObject = function fromObject(object) {
+                Expr.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.type.Expr)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.type.Expr();
                     if (object.expression != null)
                         message.expression = String(object.expression);
@@ -161298,7 +167650,7 @@
                     function SetIamPolicyRequest(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -161383,9 +167735,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    SetIamPolicyRequest.decode = function decode(reader, length, error) {
+                    SetIamPolicyRequest.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.SetIamPolicyRequest();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -161397,15 +167753,15 @@
                                     break;
                                 }
                             case 2: {
-                                    message.policy = $root.google.iam.v1.Policy.decode(reader, reader.uint32());
+                                    message.policy = $root.google.iam.v1.Policy.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 3: {
-                                    message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                    message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -161436,19 +167792,23 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    SetIamPolicyRequest.verify = function verify(message) {
+                    SetIamPolicyRequest.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.resource != null && message.hasOwnProperty("resource"))
                             if (!$util.isString(message.resource))
                                 return "resource: string expected";
                         if (message.policy != null && message.hasOwnProperty("policy")) {
-                            var error = $root.google.iam.v1.Policy.verify(message.policy);
+                            var error = $root.google.iam.v1.Policy.verify(message.policy, long + 1);
                             if (error)
                                 return "policy." + error;
                         }
                         if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                            var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                            var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                             if (error)
                                 return "updateMask." + error;
                         }
@@ -161463,21 +167823,25 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.SetIamPolicyRequest} SetIamPolicyRequest
                      */
-                    SetIamPolicyRequest.fromObject = function fromObject(object) {
+                    SetIamPolicyRequest.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.SetIamPolicyRequest)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.SetIamPolicyRequest();
                         if (object.resource != null)
                             message.resource = String(object.resource);
                         if (object.policy != null) {
                             if (typeof object.policy !== "object")
                                 throw TypeError(".google.iam.v1.SetIamPolicyRequest.policy: object expected");
-                            message.policy = $root.google.iam.v1.Policy.fromObject(object.policy);
+                            message.policy = $root.google.iam.v1.Policy.fromObject(object.policy, long + 1);
                         }
                         if (object.updateMask != null) {
                             if (typeof object.updateMask !== "object")
                                 throw TypeError(".google.iam.v1.SetIamPolicyRequest.updateMask: object expected");
-                            message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                            message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                         }
                         return message;
                     };
@@ -161559,7 +167923,7 @@
                     function GetIamPolicyRequest(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -161634,9 +167998,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    GetIamPolicyRequest.decode = function decode(reader, length, error) {
+                    GetIamPolicyRequest.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.GetIamPolicyRequest();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -161648,11 +168016,11 @@
                                     break;
                                 }
                             case 2: {
-                                    message.options = $root.google.iam.v1.GetPolicyOptions.decode(reader, reader.uint32());
+                                    message.options = $root.google.iam.v1.GetPolicyOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -161683,14 +168051,18 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    GetIamPolicyRequest.verify = function verify(message) {
+                    GetIamPolicyRequest.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.resource != null && message.hasOwnProperty("resource"))
                             if (!$util.isString(message.resource))
                                 return "resource: string expected";
                         if (message.options != null && message.hasOwnProperty("options")) {
-                            var error = $root.google.iam.v1.GetPolicyOptions.verify(message.options);
+                            var error = $root.google.iam.v1.GetPolicyOptions.verify(message.options, long + 1);
                             if (error)
                                 return "options." + error;
                         }
@@ -161705,16 +168077,20 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.GetIamPolicyRequest} GetIamPolicyRequest
                      */
-                    GetIamPolicyRequest.fromObject = function fromObject(object) {
+                    GetIamPolicyRequest.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.GetIamPolicyRequest)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.GetIamPolicyRequest();
                         if (object.resource != null)
                             message.resource = String(object.resource);
                         if (object.options != null) {
                             if (typeof object.options !== "object")
                                 throw TypeError(".google.iam.v1.GetIamPolicyRequest.options: object expected");
-                            message.options = $root.google.iam.v1.GetPolicyOptions.fromObject(object.options);
+                            message.options = $root.google.iam.v1.GetPolicyOptions.fromObject(object.options, long + 1);
                         }
                         return message;
                     };
@@ -161794,7 +168170,7 @@
                         this.permissions = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -161870,9 +168246,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    TestIamPermissionsRequest.decode = function decode(reader, length, error) {
+                    TestIamPermissionsRequest.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.TestIamPermissionsRequest();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -161890,7 +168270,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -161921,9 +168301,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    TestIamPermissionsRequest.verify = function verify(message) {
+                    TestIamPermissionsRequest.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.resource != null && message.hasOwnProperty("resource"))
                             if (!$util.isString(message.resource))
                                 return "resource: string expected";
@@ -161945,9 +168329,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.TestIamPermissionsRequest} TestIamPermissionsRequest
                      */
-                    TestIamPermissionsRequest.fromObject = function fromObject(object) {
+                    TestIamPermissionsRequest.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.TestIamPermissionsRequest)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.TestIamPermissionsRequest();
                         if (object.resource != null)
                             message.resource = String(object.resource);
@@ -162038,7 +168426,7 @@
                         this.permissions = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -162104,9 +168492,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    TestIamPermissionsResponse.decode = function decode(reader, length, error) {
+                    TestIamPermissionsResponse.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.TestIamPermissionsResponse();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -162120,7 +168512,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -162151,9 +168543,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    TestIamPermissionsResponse.verify = function verify(message) {
+                    TestIamPermissionsResponse.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.permissions != null && message.hasOwnProperty("permissions")) {
                             if (!Array.isArray(message.permissions))
                                 return "permissions: array expected";
@@ -162172,9 +168568,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.TestIamPermissionsResponse} TestIamPermissionsResponse
                      */
-                    TestIamPermissionsResponse.fromObject = function fromObject(object) {
+                    TestIamPermissionsResponse.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.TestIamPermissionsResponse)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.TestIamPermissionsResponse();
                         if (object.permissions) {
                             if (!Array.isArray(object.permissions))
@@ -162258,7 +168658,7 @@
                     function GetPolicyOptions(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -162323,9 +168723,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    GetPolicyOptions.decode = function decode(reader, length, error) {
+                    GetPolicyOptions.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.GetPolicyOptions();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -162337,7 +168741,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -162368,9 +168772,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    GetPolicyOptions.verify = function verify(message) {
+                    GetPolicyOptions.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.requestedPolicyVersion != null && message.hasOwnProperty("requestedPolicyVersion"))
                             if (!$util.isInteger(message.requestedPolicyVersion))
                                 return "requestedPolicyVersion: integer expected";
@@ -162385,9 +168793,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.GetPolicyOptions} GetPolicyOptions
                      */
-                    GetPolicyOptions.fromObject = function fromObject(object) {
+                    GetPolicyOptions.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.GetPolicyOptions)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.GetPolicyOptions();
                         if (object.requestedPolicyVersion != null)
                             message.requestedPolicyVersion = object.requestedPolicyVersion | 0;
@@ -162468,7 +168880,7 @@
                         this.auditConfigs = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -162565,9 +168977,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Policy.decode = function decode(reader, length, error) {
+                    Policy.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.Policy();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -162581,13 +168997,13 @@
                             case 4: {
                                     if (!(message.bindings && message.bindings.length))
                                         message.bindings = [];
-                                    message.bindings.push($root.google.iam.v1.Binding.decode(reader, reader.uint32()));
+                                    message.bindings.push($root.google.iam.v1.Binding.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             case 6: {
                                     if (!(message.auditConfigs && message.auditConfigs.length))
                                         message.auditConfigs = [];
-                                    message.auditConfigs.push($root.google.iam.v1.AuditConfig.decode(reader, reader.uint32()));
+                                    message.auditConfigs.push($root.google.iam.v1.AuditConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             case 3: {
@@ -162595,7 +169011,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -162626,9 +169042,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Policy.verify = function verify(message) {
+                    Policy.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.version != null && message.hasOwnProperty("version"))
                             if (!$util.isInteger(message.version))
                                 return "version: integer expected";
@@ -162636,7 +169056,7 @@
                             if (!Array.isArray(message.bindings))
                                 return "bindings: array expected";
                             for (var i = 0; i < message.bindings.length; ++i) {
-                                var error = $root.google.iam.v1.Binding.verify(message.bindings[i]);
+                                var error = $root.google.iam.v1.Binding.verify(message.bindings[i], long + 1);
                                 if (error)
                                     return "bindings." + error;
                             }
@@ -162645,7 +169065,7 @@
                             if (!Array.isArray(message.auditConfigs))
                                 return "auditConfigs: array expected";
                             for (var i = 0; i < message.auditConfigs.length; ++i) {
-                                var error = $root.google.iam.v1.AuditConfig.verify(message.auditConfigs[i]);
+                                var error = $root.google.iam.v1.AuditConfig.verify(message.auditConfigs[i], long + 1);
                                 if (error)
                                     return "auditConfigs." + error;
                             }
@@ -162664,9 +169084,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.Policy} Policy
                      */
-                    Policy.fromObject = function fromObject(object) {
+                    Policy.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.Policy)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.Policy();
                         if (object.version != null)
                             message.version = object.version | 0;
@@ -162677,7 +169101,7 @@
                             for (var i = 0; i < object.bindings.length; ++i) {
                                 if (typeof object.bindings[i] !== "object")
                                     throw TypeError(".google.iam.v1.Policy.bindings: object expected");
-                                message.bindings[i] = $root.google.iam.v1.Binding.fromObject(object.bindings[i]);
+                                message.bindings[i] = $root.google.iam.v1.Binding.fromObject(object.bindings[i], long + 1);
                             }
                         }
                         if (object.auditConfigs) {
@@ -162687,7 +169111,7 @@
                             for (var i = 0; i < object.auditConfigs.length; ++i) {
                                 if (typeof object.auditConfigs[i] !== "object")
                                     throw TypeError(".google.iam.v1.Policy.auditConfigs: object expected");
-                                message.auditConfigs[i] = $root.google.iam.v1.AuditConfig.fromObject(object.auditConfigs[i]);
+                                message.auditConfigs[i] = $root.google.iam.v1.AuditConfig.fromObject(object.auditConfigs[i], long + 1);
                             }
                         }
                         if (object.etag != null)
@@ -162794,7 +169218,7 @@
                         this.members = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -162880,9 +169304,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Binding.decode = function decode(reader, length, error) {
+                    Binding.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.Binding();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -162900,11 +169328,11 @@
                                     break;
                                 }
                             case 3: {
-                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -162935,9 +169363,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Binding.verify = function verify(message) {
+                    Binding.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.role != null && message.hasOwnProperty("role"))
                             if (!$util.isString(message.role))
                                 return "role: string expected";
@@ -162949,7 +169381,7 @@
                                     return "members: string[] expected";
                         }
                         if (message.condition != null && message.hasOwnProperty("condition")) {
-                            var error = $root.google.type.Expr.verify(message.condition);
+                            var error = $root.google.type.Expr.verify(message.condition, long + 1);
                             if (error)
                                 return "condition." + error;
                         }
@@ -162964,9 +169396,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.Binding} Binding
                      */
-                    Binding.fromObject = function fromObject(object) {
+                    Binding.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.Binding)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.Binding();
                         if (object.role != null)
                             message.role = String(object.role);
@@ -162980,7 +169416,7 @@
                         if (object.condition != null) {
                             if (typeof object.condition !== "object")
                                 throw TypeError(".google.iam.v1.Binding.condition: object expected");
-                            message.condition = $root.google.type.Expr.fromObject(object.condition);
+                            message.condition = $root.google.type.Expr.fromObject(object.condition, long + 1);
                         }
                         return message;
                     };
@@ -163067,7 +169503,7 @@
                         this.auditLogConfigs = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -163143,9 +169579,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    AuditConfig.decode = function decode(reader, length, error) {
+                    AuditConfig.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.AuditConfig();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -163159,11 +169599,11 @@
                             case 3: {
                                     if (!(message.auditLogConfigs && message.auditLogConfigs.length))
                                         message.auditLogConfigs = [];
-                                    message.auditLogConfigs.push($root.google.iam.v1.AuditLogConfig.decode(reader, reader.uint32()));
+                                    message.auditLogConfigs.push($root.google.iam.v1.AuditLogConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -163194,9 +169634,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    AuditConfig.verify = function verify(message) {
+                    AuditConfig.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.service != null && message.hasOwnProperty("service"))
                             if (!$util.isString(message.service))
                                 return "service: string expected";
@@ -163204,7 +169648,7 @@
                             if (!Array.isArray(message.auditLogConfigs))
                                 return "auditLogConfigs: array expected";
                             for (var i = 0; i < message.auditLogConfigs.length; ++i) {
-                                var error = $root.google.iam.v1.AuditLogConfig.verify(message.auditLogConfigs[i]);
+                                var error = $root.google.iam.v1.AuditLogConfig.verify(message.auditLogConfigs[i], long + 1);
                                 if (error)
                                     return "auditLogConfigs." + error;
                             }
@@ -163220,9 +169664,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.AuditConfig} AuditConfig
                      */
-                    AuditConfig.fromObject = function fromObject(object) {
+                    AuditConfig.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.AuditConfig)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.AuditConfig();
                         if (object.service != null)
                             message.service = String(object.service);
@@ -163233,7 +169681,7 @@
                             for (var i = 0; i < object.auditLogConfigs.length; ++i) {
                                 if (typeof object.auditLogConfigs[i] !== "object")
                                     throw TypeError(".google.iam.v1.AuditConfig.auditLogConfigs: object expected");
-                                message.auditLogConfigs[i] = $root.google.iam.v1.AuditLogConfig.fromObject(object.auditLogConfigs[i]);
+                                message.auditLogConfigs[i] = $root.google.iam.v1.AuditLogConfig.fromObject(object.auditLogConfigs[i], long + 1);
                             }
                         }
                         return message;
@@ -163317,7 +169765,7 @@
                         this.exemptedMembers = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -163393,9 +169841,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    AuditLogConfig.decode = function decode(reader, length, error) {
+                    AuditLogConfig.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.AuditLogConfig();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -163413,7 +169865,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -163444,9 +169896,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    AuditLogConfig.verify = function verify(message) {
+                    AuditLogConfig.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.logType != null && message.hasOwnProperty("logType"))
                             switch (message.logType) {
                             default:
@@ -163475,9 +169931,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.AuditLogConfig} AuditLogConfig
                      */
-                    AuditLogConfig.fromObject = function fromObject(object) {
+                    AuditLogConfig.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.AuditLogConfig)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.AuditLogConfig();
                         switch (object.logType) {
                         default:
@@ -163610,7 +170070,7 @@
                         this.auditConfigDeltas = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -163687,9 +170147,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    PolicyDelta.decode = function decode(reader, length, error) {
+                    PolicyDelta.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.PolicyDelta();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -163699,17 +170163,17 @@
                             case 1: {
                                     if (!(message.bindingDeltas && message.bindingDeltas.length))
                                         message.bindingDeltas = [];
-                                    message.bindingDeltas.push($root.google.iam.v1.BindingDelta.decode(reader, reader.uint32()));
+                                    message.bindingDeltas.push($root.google.iam.v1.BindingDelta.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             case 2: {
                                     if (!(message.auditConfigDeltas && message.auditConfigDeltas.length))
                                         message.auditConfigDeltas = [];
-                                    message.auditConfigDeltas.push($root.google.iam.v1.AuditConfigDelta.decode(reader, reader.uint32()));
+                                    message.auditConfigDeltas.push($root.google.iam.v1.AuditConfigDelta.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -163740,14 +170204,18 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    PolicyDelta.verify = function verify(message) {
+                    PolicyDelta.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.bindingDeltas != null && message.hasOwnProperty("bindingDeltas")) {
                             if (!Array.isArray(message.bindingDeltas))
                                 return "bindingDeltas: array expected";
                             for (var i = 0; i < message.bindingDeltas.length; ++i) {
-                                var error = $root.google.iam.v1.BindingDelta.verify(message.bindingDeltas[i]);
+                                var error = $root.google.iam.v1.BindingDelta.verify(message.bindingDeltas[i], long + 1);
                                 if (error)
                                     return "bindingDeltas." + error;
                             }
@@ -163756,7 +170224,7 @@
                             if (!Array.isArray(message.auditConfigDeltas))
                                 return "auditConfigDeltas: array expected";
                             for (var i = 0; i < message.auditConfigDeltas.length; ++i) {
-                                var error = $root.google.iam.v1.AuditConfigDelta.verify(message.auditConfigDeltas[i]);
+                                var error = $root.google.iam.v1.AuditConfigDelta.verify(message.auditConfigDeltas[i], long + 1);
                                 if (error)
                                     return "auditConfigDeltas." + error;
                             }
@@ -163772,9 +170240,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.PolicyDelta} PolicyDelta
                      */
-                    PolicyDelta.fromObject = function fromObject(object) {
+                    PolicyDelta.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.PolicyDelta)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.PolicyDelta();
                         if (object.bindingDeltas) {
                             if (!Array.isArray(object.bindingDeltas))
@@ -163783,7 +170255,7 @@
                             for (var i = 0; i < object.bindingDeltas.length; ++i) {
                                 if (typeof object.bindingDeltas[i] !== "object")
                                     throw TypeError(".google.iam.v1.PolicyDelta.bindingDeltas: object expected");
-                                message.bindingDeltas[i] = $root.google.iam.v1.BindingDelta.fromObject(object.bindingDeltas[i]);
+                                message.bindingDeltas[i] = $root.google.iam.v1.BindingDelta.fromObject(object.bindingDeltas[i], long + 1);
                             }
                         }
                         if (object.auditConfigDeltas) {
@@ -163793,7 +170265,7 @@
                             for (var i = 0; i < object.auditConfigDeltas.length; ++i) {
                                 if (typeof object.auditConfigDeltas[i] !== "object")
                                     throw TypeError(".google.iam.v1.PolicyDelta.auditConfigDeltas: object expected");
-                                message.auditConfigDeltas[i] = $root.google.iam.v1.AuditConfigDelta.fromObject(object.auditConfigDeltas[i]);
+                                message.auditConfigDeltas[i] = $root.google.iam.v1.AuditConfigDelta.fromObject(object.auditConfigDeltas[i], long + 1);
                             }
                         }
                         return message;
@@ -163881,7 +170353,7 @@
                     function BindingDelta(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -163976,9 +170448,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    BindingDelta.decode = function decode(reader, length, error) {
+                    BindingDelta.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.BindingDelta();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -163998,11 +170474,11 @@
                                     break;
                                 }
                             case 4: {
-                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -164033,9 +170509,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    BindingDelta.verify = function verify(message) {
+                    BindingDelta.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.action != null && message.hasOwnProperty("action"))
                             switch (message.action) {
                             default:
@@ -164052,7 +170532,7 @@
                             if (!$util.isString(message.member))
                                 return "member: string expected";
                         if (message.condition != null && message.hasOwnProperty("condition")) {
-                            var error = $root.google.type.Expr.verify(message.condition);
+                            var error = $root.google.type.Expr.verify(message.condition, long + 1);
                             if (error)
                                 return "condition." + error;
                         }
@@ -164067,9 +170547,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.BindingDelta} BindingDelta
                      */
-                    BindingDelta.fromObject = function fromObject(object) {
+                    BindingDelta.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.BindingDelta)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.BindingDelta();
                         switch (object.action) {
                         default:
@@ -164098,7 +170582,7 @@
                         if (object.condition != null) {
                             if (typeof object.condition !== "object")
                                 throw TypeError(".google.iam.v1.BindingDelta.condition: object expected");
-                            message.condition = $root.google.type.Expr.fromObject(object.condition);
+                            message.condition = $root.google.type.Expr.fromObject(object.condition, long + 1);
                         }
                         return message;
                     };
@@ -164201,7 +170685,7 @@
                     function AuditConfigDelta(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -164296,9 +170780,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    AuditConfigDelta.decode = function decode(reader, length, error) {
+                    AuditConfigDelta.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.AuditConfigDelta();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -164322,7 +170810,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -164353,9 +170841,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    AuditConfigDelta.verify = function verify(message) {
+                    AuditConfigDelta.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.action != null && message.hasOwnProperty("action"))
                             switch (message.action) {
                             default:
@@ -164385,9 +170877,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.AuditConfigDelta} AuditConfigDelta
                      */
-                    AuditConfigDelta.fromObject = function fromObject(object) {
+                    AuditConfigDelta.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.AuditConfigDelta)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.AuditConfigDelta();
                         switch (object.action) {
                         default:
@@ -164732,7 +171228,7 @@
                 function Operation(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -164851,9 +171347,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Operation.decode = function decode(reader, length, error) {
+                Operation.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.Operation();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -164865,7 +171365,7 @@
                                 break;
                             }
                         case 2: {
-                                message.metadata = $root.google.protobuf.Any.decode(reader, reader.uint32());
+                                message.metadata = $root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -164873,15 +171373,15 @@
                                 break;
                             }
                         case 4: {
-                                message.error = $root.google.rpc.Status.decode(reader, reader.uint32());
+                                message.error = $root.google.rpc.Status.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 5: {
-                                message.response = $root.google.protobuf.Any.decode(reader, reader.uint32());
+                                message.response = $root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -164912,15 +171412,19 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Operation.verify = function verify(message) {
+                Operation.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     var properties = {};
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
                     if (message.metadata != null && message.hasOwnProperty("metadata")) {
-                        var error = $root.google.protobuf.Any.verify(message.metadata);
+                        var error = $root.google.protobuf.Any.verify(message.metadata, long + 1);
                         if (error)
                             return "metadata." + error;
                     }
@@ -164930,7 +171434,7 @@
                     if (message.error != null && message.hasOwnProperty("error")) {
                         properties.result = 1;
                         {
-                            var error = $root.google.rpc.Status.verify(message.error);
+                            var error = $root.google.rpc.Status.verify(message.error, long + 1);
                             if (error)
                                 return "error." + error;
                         }
@@ -164940,7 +171444,7 @@
                             return "result: multiple values";
                         properties.result = 1;
                         {
-                            var error = $root.google.protobuf.Any.verify(message.response);
+                            var error = $root.google.protobuf.Any.verify(message.response, long + 1);
                             if (error)
                                 return "response." + error;
                         }
@@ -164956,28 +171460,32 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.Operation} Operation
                  */
-                Operation.fromObject = function fromObject(object) {
+                Operation.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.Operation)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.Operation();
                     if (object.name != null)
                         message.name = String(object.name);
                     if (object.metadata != null) {
                         if (typeof object.metadata !== "object")
                             throw TypeError(".google.longrunning.Operation.metadata: object expected");
-                        message.metadata = $root.google.protobuf.Any.fromObject(object.metadata);
+                        message.metadata = $root.google.protobuf.Any.fromObject(object.metadata, long + 1);
                     }
                     if (object.done != null)
                         message.done = Boolean(object.done);
                     if (object.error != null) {
                         if (typeof object.error !== "object")
                             throw TypeError(".google.longrunning.Operation.error: object expected");
-                        message.error = $root.google.rpc.Status.fromObject(object.error);
+                        message.error = $root.google.rpc.Status.fromObject(object.error, long + 1);
                     }
                     if (object.response != null) {
                         if (typeof object.response !== "object")
                             throw TypeError(".google.longrunning.Operation.response: object expected");
-                        message.response = $root.google.protobuf.Any.fromObject(object.response);
+                        message.response = $root.google.protobuf.Any.fromObject(object.response, long + 1);
                     }
                     return message;
                 };
@@ -165068,7 +171576,7 @@
                 function GetOperationRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -165133,9 +171641,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GetOperationRequest.decode = function decode(reader, length, error) {
+                GetOperationRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.GetOperationRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -165147,7 +171659,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -165178,9 +171690,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GetOperationRequest.verify = function verify(message) {
+                GetOperationRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -165195,9 +171711,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.GetOperationRequest} GetOperationRequest
                  */
-                GetOperationRequest.fromObject = function fromObject(object) {
+                GetOperationRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.GetOperationRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.GetOperationRequest();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -165276,7 +171796,7 @@
                 function ListOperationsRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -165371,9 +171891,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ListOperationsRequest.decode = function decode(reader, length, error) {
+                ListOperationsRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.ListOperationsRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -165397,7 +171921,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -165428,9 +171952,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ListOperationsRequest.verify = function verify(message) {
+                ListOperationsRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -165454,9 +171982,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.ListOperationsRequest} ListOperationsRequest
                  */
-                ListOperationsRequest.fromObject = function fromObject(object) {
+                ListOperationsRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.ListOperationsRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.ListOperationsRequest();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -165550,7 +172082,7 @@
                     this.operations = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -165626,9 +172158,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ListOperationsResponse.decode = function decode(reader, length, error) {
+                ListOperationsResponse.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.ListOperationsResponse();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -165638,7 +172174,7 @@
                         case 1: {
                                 if (!(message.operations && message.operations.length))
                                     message.operations = [];
-                                message.operations.push($root.google.longrunning.Operation.decode(reader, reader.uint32()));
+                                message.operations.push($root.google.longrunning.Operation.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
@@ -165646,7 +172182,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -165677,14 +172213,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ListOperationsResponse.verify = function verify(message) {
+                ListOperationsResponse.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.operations != null && message.hasOwnProperty("operations")) {
                         if (!Array.isArray(message.operations))
                             return "operations: array expected";
                         for (var i = 0; i < message.operations.length; ++i) {
-                            var error = $root.google.longrunning.Operation.verify(message.operations[i]);
+                            var error = $root.google.longrunning.Operation.verify(message.operations[i], long + 1);
                             if (error)
                                 return "operations." + error;
                         }
@@ -165703,9 +172243,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.ListOperationsResponse} ListOperationsResponse
                  */
-                ListOperationsResponse.fromObject = function fromObject(object) {
+                ListOperationsResponse.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.ListOperationsResponse)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.ListOperationsResponse();
                     if (object.operations) {
                         if (!Array.isArray(object.operations))
@@ -165714,7 +172258,7 @@
                         for (var i = 0; i < object.operations.length; ++i) {
                             if (typeof object.operations[i] !== "object")
                                 throw TypeError(".google.longrunning.ListOperationsResponse.operations: object expected");
-                            message.operations[i] = $root.google.longrunning.Operation.fromObject(object.operations[i]);
+                            message.operations[i] = $root.google.longrunning.Operation.fromObject(object.operations[i], long + 1);
                         }
                     }
                     if (object.nextPageToken != null)
@@ -165798,7 +172342,7 @@
                 function CancelOperationRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -165863,9 +172407,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CancelOperationRequest.decode = function decode(reader, length, error) {
+                CancelOperationRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.CancelOperationRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -165877,7 +172425,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -165908,9 +172456,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CancelOperationRequest.verify = function verify(message) {
+                CancelOperationRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -165925,9 +172477,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.CancelOperationRequest} CancelOperationRequest
                  */
-                CancelOperationRequest.fromObject = function fromObject(object) {
+                CancelOperationRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.CancelOperationRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.CancelOperationRequest();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -166003,7 +172559,7 @@
                 function DeleteOperationRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -166068,9 +172624,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DeleteOperationRequest.decode = function decode(reader, length, error) {
+                DeleteOperationRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.DeleteOperationRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -166082,7 +172642,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -166113,9 +172673,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DeleteOperationRequest.verify = function verify(message) {
+                DeleteOperationRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -166130,9 +172694,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.DeleteOperationRequest} DeleteOperationRequest
                  */
-                DeleteOperationRequest.fromObject = function fromObject(object) {
+                DeleteOperationRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.DeleteOperationRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.DeleteOperationRequest();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -166209,7 +172777,7 @@
                 function WaitOperationRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -166284,9 +172852,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                WaitOperationRequest.decode = function decode(reader, length, error) {
+                WaitOperationRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.WaitOperationRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -166298,11 +172870,11 @@
                                 break;
                             }
                         case 2: {
-                                message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -166333,14 +172905,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                WaitOperationRequest.verify = function verify(message) {
+                WaitOperationRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
                     if (message.timeout != null && message.hasOwnProperty("timeout")) {
-                        var error = $root.google.protobuf.Duration.verify(message.timeout);
+                        var error = $root.google.protobuf.Duration.verify(message.timeout, long + 1);
                         if (error)
                             return "timeout." + error;
                     }
@@ -166355,16 +172931,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.WaitOperationRequest} WaitOperationRequest
                  */
-                WaitOperationRequest.fromObject = function fromObject(object) {
+                WaitOperationRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.WaitOperationRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.WaitOperationRequest();
                     if (object.name != null)
                         message.name = String(object.name);
                     if (object.timeout != null) {
                         if (typeof object.timeout !== "object")
                             throw TypeError(".google.longrunning.WaitOperationRequest.timeout: object expected");
-                        message.timeout = $root.google.protobuf.Duration.fromObject(object.timeout);
+                        message.timeout = $root.google.protobuf.Duration.fromObject(object.timeout, long + 1);
                     }
                     return message;
                 };
@@ -166443,7 +173023,7 @@
                 function OperationInfo(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -166518,9 +173098,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OperationInfo.decode = function decode(reader, length, error) {
+                OperationInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.OperationInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -166536,7 +173120,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -166567,9 +173151,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OperationInfo.verify = function verify(message) {
+                OperationInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.responseType != null && message.hasOwnProperty("responseType"))
                         if (!$util.isString(message.responseType))
                             return "responseType: string expected";
@@ -166587,9 +173175,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.OperationInfo} OperationInfo
                  */
-                OperationInfo.fromObject = function fromObject(object) {
+                OperationInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.OperationInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.OperationInfo();
                     if (object.responseType != null)
                         message.responseType = String(object.responseType);
@@ -166686,7 +173278,7 @@
                     this.details = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -166772,9 +173364,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Status.decode = function decode(reader, length, error) {
+                Status.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.rpc.Status();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -166792,11 +173388,11 @@
                         case 3: {
                                 if (!(message.details && message.details.length))
                                     message.details = [];
-                                message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32()));
+                                message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -166827,9 +173423,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Status.verify = function verify(message) {
+                Status.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.code != null && message.hasOwnProperty("code"))
                         if (!$util.isInteger(message.code))
                             return "code: integer expected";
@@ -166840,7 +173440,7 @@
                         if (!Array.isArray(message.details))
                             return "details: array expected";
                         for (var i = 0; i < message.details.length; ++i) {
-                            var error = $root.google.protobuf.Any.verify(message.details[i]);
+                            var error = $root.google.protobuf.Any.verify(message.details[i], long + 1);
                             if (error)
                                 return "details." + error;
                         }
@@ -166856,9 +173456,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.rpc.Status} Status
                  */
-                Status.fromObject = function fromObject(object) {
+                Status.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.rpc.Status)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.rpc.Status();
                     if (object.code != null)
                         message.code = object.code | 0;
@@ -166871,7 +173475,7 @@
                         for (var i = 0; i < object.details.length; ++i) {
                             if (typeof object.details[i] !== "object")
                                 throw TypeError(".google.rpc.Status.details: object expected");
-                            message.details[i] = $root.google.protobuf.Any.fromObject(object.details[i]);
+                            message.details[i] = $root.google.protobuf.Any.fromObject(object.details[i], long + 1);
                         }
                     }
                     return message;
diff --git a/packages/google-cloud-securitycentermanagement/README.md b/packages/google-cloud-securitycentermanagement/README.md
index f419bcf37bbb..e8342e17b8b9 100644
--- a/packages/google-cloud-securitycentermanagement/README.md
+++ b/packages/google-cloud-securitycentermanagement/README.md
@@ -79,7 +79,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
 | update security center service | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycentermanagement/samples/generated/v1/security_center_management.update_security_center_service.js) |
 | update security health analytics custom module | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycentermanagement/samples/generated/v1/security_center_management.update_security_health_analytics_custom_module.js) |
 | validate event threat detection custom module | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycentermanagement/samples/generated/v1/security_center_management.validate_event_threat_detection_custom_module.js) |
-| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-securitycentermanagement/samples/generated/v1/snippet_metadata_google.cloud.securitycentermanagement.v1.json) |
 
 
 ## Supported Node.js Versions
diff --git a/packages/google-cloud-securitycentermanagement/protos/protos.js b/packages/google-cloud-securitycentermanagement/protos/protos.js
index e655235289d7..30e5121c37b4 100644
--- a/packages/google-cloud-securitycentermanagement/protos/protos.js
+++ b/packages/google-cloud-securitycentermanagement/protos/protos.js
@@ -820,7 +820,7 @@
                             this.modules = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -938,9 +938,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityCenterService.decode = function decode(reader, length, error) {
+                        SecurityCenterService.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.SecurityCenterService(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -972,26 +976,28 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings.decode(reader, reader.uint32());
+                                                value = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.modules, key);
                                         message.modules[key] = value;
                                         break;
                                     }
                                 case 5: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
-                                        message.serviceConfig = $root.google.protobuf.Struct.decode(reader, reader.uint32());
+                                        message.serviceConfig = $root.google.protobuf.Struct.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1022,9 +1028,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityCenterService.verify = function verify(message) {
+                        SecurityCenterService.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -1055,18 +1065,18 @@
                                     return "modules: object expected";
                                 var key = Object.keys(message.modules);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings.verify(message.modules[key[i]]);
+                                    var error = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings.verify(message.modules[key[i]], long + 1);
                                     if (error)
                                         return "modules." + error;
                                 }
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
                             if (message.serviceConfig != null && message.hasOwnProperty("serviceConfig")) {
-                                var error = $root.google.protobuf.Struct.verify(message.serviceConfig);
+                                var error = $root.google.protobuf.Struct.verify(message.serviceConfig, long + 1);
                                 if (error)
                                     return "serviceConfig." + error;
                             }
@@ -1081,9 +1091,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.SecurityCenterService} SecurityCenterService
                          */
-                        SecurityCenterService.fromObject = function fromObject(object) {
+                        SecurityCenterService.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.SecurityCenterService)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.SecurityCenterService();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -1148,20 +1162,22 @@
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SecurityCenterService.modules: object expected");
                                 message.modules = {};
                                 for (var keys = Object.keys(object.modules), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.modules, keys[i]);
                                     if (typeof object.modules[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.SecurityCenterService.modules: object expected");
-                                    message.modules[keys[i]] = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings.fromObject(object.modules[keys[i]]);
+                                    message.modules[keys[i]] = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings.fromObject(object.modules[keys[i]], long + 1);
                                 }
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SecurityCenterService.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.serviceConfig != null) {
                                 if (typeof object.serviceConfig !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SecurityCenterService.serviceConfig: object expected");
-                                message.serviceConfig = $root.google.protobuf.Struct.fromObject(object.serviceConfig);
+                                message.serviceConfig = $root.google.protobuf.Struct.fromObject(object.serviceConfig, long + 1);
                             }
                             return message;
                         };
@@ -1197,8 +1213,11 @@
                             var keys2;
                             if (message.modules && (keys2 = Object.keys(message.modules)).length) {
                                 object.modules = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.modules, keys2[j]);
                                     object.modules[keys2[j]] = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings.toObject(message.modules[keys2[j]], options);
+                                }
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime"))
                                 object.updateTime = $root.google.protobuf.Timestamp.toObject(message.updateTime, options);
@@ -1254,7 +1273,7 @@
                             function ModuleSettings(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -1329,9 +1348,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ModuleSettings.decode = function decode(reader, length, error) {
+                            ModuleSettings.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -1347,7 +1370,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -1378,9 +1401,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ModuleSettings.verify = function verify(message) {
+                            ModuleSettings.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.intendedEnablementState != null && message.hasOwnProperty("intendedEnablementState"))
                                     switch (message.intendedEnablementState) {
                                     default:
@@ -1414,9 +1441,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings} ModuleSettings
                              */
-                            ModuleSettings.fromObject = function fromObject(object) {
+                            ModuleSettings.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.ModuleSettings();
                                 switch (object.intendedEnablementState) {
                                 default:
@@ -1576,7 +1607,7 @@
                         function EffectiveSecurityHealthAnalyticsCustomModule(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1671,9 +1702,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EffectiveSecurityHealthAnalyticsCustomModule.decode = function decode(reader, length, error) {
+                        EffectiveSecurityHealthAnalyticsCustomModule.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1685,7 +1720,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.decode(reader, reader.uint32());
+                                        message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -1697,7 +1732,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1728,14 +1763,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EffectiveSecurityHealthAnalyticsCustomModule.verify = function verify(message) {
+                        EffectiveSecurityHealthAnalyticsCustomModule.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.customConfig != null && message.hasOwnProperty("customConfig")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.verify(message.customConfig);
+                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.verify(message.customConfig, long + 1);
                                 if (error)
                                     return "customConfig." + error;
                             }
@@ -1762,16 +1801,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule} EffectiveSecurityHealthAnalyticsCustomModule
                          */
-                        EffectiveSecurityHealthAnalyticsCustomModule.fromObject = function fromObject(object) {
+                        EffectiveSecurityHealthAnalyticsCustomModule.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.customConfig != null) {
                                 if (typeof object.customConfig !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.customConfig: object expected");
-                                message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.fromObject(object.customConfig);
+                                message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.fromObject(object.customConfig, long + 1);
                             }
                             switch (object.enablementState) {
                             default:
@@ -1895,7 +1938,7 @@
                         function ListEffectiveSecurityHealthAnalyticsCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1980,9 +2023,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2002,7 +2049,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2033,9 +2080,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -2056,9 +2107,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest} ListEffectiveSecurityHealthAnalyticsCustomModulesRequest
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -2147,7 +2202,7 @@
                             this.effectiveSecurityHealthAnalyticsCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2223,9 +2278,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2235,7 +2294,7 @@
                                 case 1: {
                                         if (!(message.effectiveSecurityHealthAnalyticsCustomModules && message.effectiveSecurityHealthAnalyticsCustomModules.length))
                                             message.effectiveSecurityHealthAnalyticsCustomModules = [];
-                                        message.effectiveSecurityHealthAnalyticsCustomModules.push($root.google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32()));
+                                        message.effectiveSecurityHealthAnalyticsCustomModules.push($root.google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -2243,7 +2302,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2274,14 +2333,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.effectiveSecurityHealthAnalyticsCustomModules != null && message.hasOwnProperty("effectiveSecurityHealthAnalyticsCustomModules")) {
                                 if (!Array.isArray(message.effectiveSecurityHealthAnalyticsCustomModules))
                                     return "effectiveSecurityHealthAnalyticsCustomModules: array expected";
                                 for (var i = 0; i < message.effectiveSecurityHealthAnalyticsCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.verify(message.effectiveSecurityHealthAnalyticsCustomModules[i]);
+                                    var error = $root.google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.verify(message.effectiveSecurityHealthAnalyticsCustomModules[i], long + 1);
                                     if (error)
                                         return "effectiveSecurityHealthAnalyticsCustomModules." + error;
                                 }
@@ -2300,9 +2363,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse} ListEffectiveSecurityHealthAnalyticsCustomModulesResponse
                          */
-                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse();
                             if (object.effectiveSecurityHealthAnalyticsCustomModules) {
                                 if (!Array.isArray(object.effectiveSecurityHealthAnalyticsCustomModules))
@@ -2311,7 +2378,7 @@
                                 for (var i = 0; i < object.effectiveSecurityHealthAnalyticsCustomModules.length; ++i) {
                                     if (typeof object.effectiveSecurityHealthAnalyticsCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ListEffectiveSecurityHealthAnalyticsCustomModulesResponse.effectiveSecurityHealthAnalyticsCustomModules: object expected");
-                                    message.effectiveSecurityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.fromObject(object.effectiveSecurityHealthAnalyticsCustomModules[i]);
+                                    message.effectiveSecurityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.EffectiveSecurityHealthAnalyticsCustomModule.fromObject(object.effectiveSecurityHealthAnalyticsCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -2395,7 +2462,7 @@
                         function GetEffectiveSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2460,9 +2527,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2474,7 +2545,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2505,9 +2576,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -2522,9 +2597,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest} GetEffectiveSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        GetEffectiveSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.GetEffectiveSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -2606,7 +2685,7 @@
                         function SecurityHealthAnalyticsCustomModule(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2731,9 +2810,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SecurityHealthAnalyticsCustomModule.decode = function decode(reader, length, error) {
+                        SecurityHealthAnalyticsCustomModule.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2753,7 +2836,7 @@
                                         break;
                                     }
                                 case 4: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
@@ -2765,11 +2848,11 @@
                                         break;
                                     }
                                 case 7: {
-                                        message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.decode(reader, reader.uint32());
+                                        message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2800,9 +2883,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SecurityHealthAnalyticsCustomModule.verify = function verify(message) {
+                        SecurityHealthAnalyticsCustomModule.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -2820,7 +2907,7 @@
                                     break;
                                 }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -2831,7 +2918,7 @@
                                 if (!$util.isString(message.ancestorModule))
                                     return "ancestorModule: string expected";
                             if (message.customConfig != null && message.hasOwnProperty("customConfig")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.verify(message.customConfig);
+                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.verify(message.customConfig, long + 1);
                                 if (error)
                                     return "customConfig." + error;
                             }
@@ -2846,9 +2933,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule} SecurityHealthAnalyticsCustomModule
                          */
-                        SecurityHealthAnalyticsCustomModule.fromObject = function fromObject(object) {
+                        SecurityHealthAnalyticsCustomModule.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -2881,7 +2972,7 @@
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.lastEditor != null)
                                 message.lastEditor = String(object.lastEditor);
@@ -2890,7 +2981,7 @@
                             if (object.customConfig != null) {
                                 if (typeof object.customConfig !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.customConfig: object expected");
-                                message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.fromObject(object.customConfig);
+                                message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.fromObject(object.customConfig, long + 1);
                             }
                             return message;
                         };
@@ -3006,7 +3097,7 @@
                         function CustomConfig(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3121,9 +3212,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CustomConfig.decode = function decode(reader, length, error) {
+                        CustomConfig.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.CustomConfig();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3131,15 +3226,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.predicate = $root.google.type.Expr.decode(reader, reader.uint32());
+                                        message.predicate = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.customOutput = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.decode(reader, reader.uint32());
+                                        message.customOutput = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.resourceSelector = $root.google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector.decode(reader, reader.uint32());
+                                        message.resourceSelector = $root.google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
@@ -3155,7 +3250,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3186,21 +3281,25 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CustomConfig.verify = function verify(message) {
+                        CustomConfig.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.predicate != null && message.hasOwnProperty("predicate")) {
-                                var error = $root.google.type.Expr.verify(message.predicate);
+                                var error = $root.google.type.Expr.verify(message.predicate, long + 1);
                                 if (error)
                                     return "predicate." + error;
                             }
                             if (message.customOutput != null && message.hasOwnProperty("customOutput")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.verify(message.customOutput);
+                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.verify(message.customOutput, long + 1);
                                 if (error)
                                     return "customOutput." + error;
                             }
                             if (message.resourceSelector != null && message.hasOwnProperty("resourceSelector")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector.verify(message.resourceSelector);
+                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector.verify(message.resourceSelector, long + 1);
                                 if (error)
                                     return "resourceSelector." + error;
                             }
@@ -3232,24 +3331,28 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.CustomConfig} CustomConfig
                          */
-                        CustomConfig.fromObject = function fromObject(object) {
+                        CustomConfig.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.CustomConfig)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.CustomConfig();
                             if (object.predicate != null) {
                                 if (typeof object.predicate !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.CustomConfig.predicate: object expected");
-                                message.predicate = $root.google.type.Expr.fromObject(object.predicate);
+                                message.predicate = $root.google.type.Expr.fromObject(object.predicate, long + 1);
                             }
                             if (object.customOutput != null) {
                                 if (typeof object.customOutput !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.CustomConfig.customOutput: object expected");
-                                message.customOutput = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.fromObject(object.customOutput);
+                                message.customOutput = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.fromObject(object.customOutput, long + 1);
                             }
                             if (object.resourceSelector != null) {
                                 if (typeof object.resourceSelector !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.CustomConfig.resourceSelector: object expected");
-                                message.resourceSelector = $root.google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector.fromObject(object.resourceSelector);
+                                message.resourceSelector = $root.google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector.fromObject(object.resourceSelector, long + 1);
                             }
                             switch (object.severity) {
                             default:
@@ -3369,7 +3472,7 @@
                                 this.properties = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -3435,9 +3538,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            CustomOutputSpec.decode = function decode(reader, length, error) {
+                            CustomOutputSpec.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -3447,11 +3554,11 @@
                                     case 1: {
                                             if (!(message.properties && message.properties.length))
                                                 message.properties = [];
-                                            message.properties.push($root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property.decode(reader, reader.uint32()));
+                                            message.properties.push($root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property.decode(reader, reader.uint32(), undefined, long + 1));
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -3482,14 +3589,18 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            CustomOutputSpec.verify = function verify(message) {
+                            CustomOutputSpec.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.properties != null && message.hasOwnProperty("properties")) {
                                     if (!Array.isArray(message.properties))
                                         return "properties: array expected";
                                     for (var i = 0; i < message.properties.length; ++i) {
-                                        var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property.verify(message.properties[i]);
+                                        var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property.verify(message.properties[i], long + 1);
                                         if (error)
                                             return "properties." + error;
                                     }
@@ -3505,9 +3616,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec} CustomOutputSpec
                              */
-                            CustomOutputSpec.fromObject = function fromObject(object) {
+                            CustomOutputSpec.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec();
                                 if (object.properties) {
                                     if (!Array.isArray(object.properties))
@@ -3516,7 +3631,7 @@
                                     for (var i = 0; i < object.properties.length; ++i) {
                                         if (typeof object.properties[i] !== "object")
                                             throw TypeError(".google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.properties: object expected");
-                                        message.properties[i] = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property.fromObject(object.properties[i]);
+                                        message.properties[i] = $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property.fromObject(object.properties[i], long + 1);
                                     }
                                 }
                                 return message;
@@ -3592,7 +3707,7 @@
                                 function Property(properties) {
                                     if (properties)
                                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                            if (properties[keys[i]] != null)
+                                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                                 this[keys[i]] = properties[keys[i]];
                                 }
     
@@ -3667,9 +3782,13 @@
                                  * @throws {Error} If the payload is not a reader or valid buffer
                                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                                  */
-                                Property.decode = function decode(reader, length, error) {
+                                Property.decode = function decode(reader, length, error, long) {
                                     if (!(reader instanceof $Reader))
                                         reader = $Reader.create(reader);
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $Reader.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property();
                                     while (reader.pos < end) {
                                         var tag = reader.uint32();
@@ -3681,11 +3800,11 @@
                                                 break;
                                             }
                                         case 2: {
-                                                message.valueExpression = $root.google.type.Expr.decode(reader, reader.uint32());
+                                                message.valueExpression = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             }
                                         default:
-                                            reader.skipType(tag & 7);
+                                            reader.skipType(tag & 7, long);
                                             break;
                                         }
                                     }
@@ -3716,14 +3835,18 @@
                                  * @param {Object.<string,*>} message Plain object to verify
                                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                                  */
-                                Property.verify = function verify(message) {
+                                Property.verify = function verify(message, long) {
                                     if (typeof message !== "object" || message === null)
                                         return "object expected";
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        return "maximum nesting depth exceeded";
                                     if (message.name != null && message.hasOwnProperty("name"))
                                         if (!$util.isString(message.name))
                                             return "name: string expected";
                                     if (message.valueExpression != null && message.hasOwnProperty("valueExpression")) {
-                                        var error = $root.google.type.Expr.verify(message.valueExpression);
+                                        var error = $root.google.type.Expr.verify(message.valueExpression, long + 1);
                                         if (error)
                                             return "valueExpression." + error;
                                     }
@@ -3738,16 +3861,20 @@
                                  * @param {Object.<string,*>} object Plain object
                                  * @returns {google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property} Property
                                  */
-                                Property.fromObject = function fromObject(object) {
+                                Property.fromObject = function fromObject(object, long) {
                                     if (object instanceof $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property)
                                         return object;
+                                    if (long === undefined)
+                                        long = 0;
+                                    if (long > $util.recursionLimit)
+                                        throw Error("maximum nesting depth exceeded");
                                     var message = new $root.google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property();
                                     if (object.name != null)
                                         message.name = String(object.name);
                                     if (object.valueExpression != null) {
                                         if (typeof object.valueExpression !== "object")
                                             throw TypeError(".google.cloud.securitycentermanagement.v1.CustomConfig.CustomOutputSpec.Property.valueExpression: object expected");
-                                        message.valueExpression = $root.google.type.Expr.fromObject(object.valueExpression);
+                                        message.valueExpression = $root.google.type.Expr.fromObject(object.valueExpression, long + 1);
                                     }
                                     return message;
                                 };
@@ -3829,7 +3956,7 @@
                                 this.resourceTypes = [];
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -3895,9 +4022,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            ResourceSelector.decode = function decode(reader, length, error) {
+                            ResourceSelector.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -3911,7 +4042,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -3942,9 +4073,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            ResourceSelector.verify = function verify(message) {
+                            ResourceSelector.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.resourceTypes != null && message.hasOwnProperty("resourceTypes")) {
                                     if (!Array.isArray(message.resourceTypes))
                                         return "resourceTypes: array expected";
@@ -3963,9 +4098,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector} ResourceSelector
                              */
-                            ResourceSelector.fromObject = function fromObject(object) {
+                            ResourceSelector.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycentermanagement.v1.CustomConfig.ResourceSelector();
                                 if (object.resourceTypes) {
                                     if (!Array.isArray(object.resourceTypes))
@@ -4074,7 +4213,7 @@
                         function ListSecurityHealthAnalyticsCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4159,9 +4298,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4181,7 +4324,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4212,9 +4355,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message) {
+                        ListSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -4235,9 +4382,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesRequest} ListSecurityHealthAnalyticsCustomModulesRequest
                          */
-                        ListSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -4326,7 +4477,7 @@
                             this.securityHealthAnalyticsCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4402,9 +4553,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4414,7 +4569,7 @@
                                 case 1: {
                                         if (!(message.securityHealthAnalyticsCustomModules && message.securityHealthAnalyticsCustomModules.length))
                                             message.securityHealthAnalyticsCustomModules = [];
-                                        message.securityHealthAnalyticsCustomModules.push($root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32()));
+                                        message.securityHealthAnalyticsCustomModules.push($root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -4422,7 +4577,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4453,14 +4608,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message) {
+                        ListSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityHealthAnalyticsCustomModules != null && message.hasOwnProperty("securityHealthAnalyticsCustomModules")) {
                                 if (!Array.isArray(message.securityHealthAnalyticsCustomModules))
                                     return "securityHealthAnalyticsCustomModules: array expected";
                                 for (var i = 0; i < message.securityHealthAnalyticsCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModules[i]);
+                                    var error = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModules[i], long + 1);
                                     if (error)
                                         return "securityHealthAnalyticsCustomModules." + error;
                                 }
@@ -4479,9 +4638,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesResponse} ListSecurityHealthAnalyticsCustomModulesResponse
                          */
-                        ListSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesResponse();
                             if (object.securityHealthAnalyticsCustomModules) {
                                 if (!Array.isArray(object.securityHealthAnalyticsCustomModules))
@@ -4490,7 +4653,7 @@
                                 for (var i = 0; i < object.securityHealthAnalyticsCustomModules.length; ++i) {
                                     if (typeof object.securityHealthAnalyticsCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ListSecurityHealthAnalyticsCustomModulesResponse.securityHealthAnalyticsCustomModules: object expected");
-                                    message.securityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModules[i]);
+                                    message.securityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -4576,7 +4739,7 @@
                         function ListDescendantSecurityHealthAnalyticsCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4661,9 +4824,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4683,7 +4850,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4714,9 +4881,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -4737,9 +4908,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest} ListDescendantSecurityHealthAnalyticsCustomModulesRequest
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -4828,7 +5003,7 @@
                             this.securityHealthAnalyticsCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4904,9 +5079,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4916,7 +5095,7 @@
                                 case 1: {
                                         if (!(message.securityHealthAnalyticsCustomModules && message.securityHealthAnalyticsCustomModules.length))
                                             message.securityHealthAnalyticsCustomModules = [];
-                                        message.securityHealthAnalyticsCustomModules.push($root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32()));
+                                        message.securityHealthAnalyticsCustomModules.push($root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -4924,7 +5103,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4955,14 +5134,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityHealthAnalyticsCustomModules != null && message.hasOwnProperty("securityHealthAnalyticsCustomModules")) {
                                 if (!Array.isArray(message.securityHealthAnalyticsCustomModules))
                                     return "securityHealthAnalyticsCustomModules: array expected";
                                 for (var i = 0; i < message.securityHealthAnalyticsCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModules[i]);
+                                    var error = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModules[i], long + 1);
                                     if (error)
                                         return "securityHealthAnalyticsCustomModules." + error;
                                 }
@@ -4981,9 +5164,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse} ListDescendantSecurityHealthAnalyticsCustomModulesResponse
                          */
-                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListDescendantSecurityHealthAnalyticsCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse();
                             if (object.securityHealthAnalyticsCustomModules) {
                                 if (!Array.isArray(object.securityHealthAnalyticsCustomModules))
@@ -4992,7 +5179,7 @@
                                 for (var i = 0; i < object.securityHealthAnalyticsCustomModules.length; ++i) {
                                     if (typeof object.securityHealthAnalyticsCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ListDescendantSecurityHealthAnalyticsCustomModulesResponse.securityHealthAnalyticsCustomModules: object expected");
-                                    message.securityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModules[i]);
+                                    message.securityHealthAnalyticsCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -5076,7 +5263,7 @@
                         function GetSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5141,9 +5328,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        GetSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.GetSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5155,7 +5346,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5186,9 +5377,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        GetSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -5203,9 +5398,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.GetSecurityHealthAnalyticsCustomModuleRequest} GetSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        GetSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        GetSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.GetSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.GetSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -5283,7 +5482,7 @@
                         function CreateSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5368,9 +5567,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        CreateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.CreateSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5382,7 +5585,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32());
+                                        message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -5390,7 +5593,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5421,14 +5624,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        CreateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.securityHealthAnalyticsCustomModule != null && message.hasOwnProperty("securityHealthAnalyticsCustomModule")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModule);
+                                var error = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModule, long + 1);
                                 if (error)
                                     return "securityHealthAnalyticsCustomModule." + error;
                             }
@@ -5446,16 +5653,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.CreateSecurityHealthAnalyticsCustomModuleRequest} CreateSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        CreateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        CreateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.CreateSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.CreateSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.securityHealthAnalyticsCustomModule != null) {
                                 if (typeof object.securityHealthAnalyticsCustomModule !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.CreateSecurityHealthAnalyticsCustomModuleRequest.securityHealthAnalyticsCustomModule: object expected");
-                                message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModule);
+                                message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModule, long + 1);
                             }
                             if (object.validateOnly != null)
                                 message.validateOnly = Boolean(object.validateOnly);
@@ -5540,7 +5751,7 @@
                         function UpdateSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5625,9 +5836,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        UpdateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5635,11 +5850,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32());
+                                        message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -5647,7 +5862,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5678,16 +5893,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        UpdateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
                             if (message.securityHealthAnalyticsCustomModule != null && message.hasOwnProperty("securityHealthAnalyticsCustomModule")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModule);
+                                var error = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.verify(message.securityHealthAnalyticsCustomModule, long + 1);
                                 if (error)
                                     return "securityHealthAnalyticsCustomModule." + error;
                             }
@@ -5705,19 +5924,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest} UpdateSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        UpdateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        UpdateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             if (object.securityHealthAnalyticsCustomModule != null) {
                                 if (typeof object.securityHealthAnalyticsCustomModule !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.UpdateSecurityHealthAnalyticsCustomModuleRequest.securityHealthAnalyticsCustomModule: object expected");
-                                message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModule);
+                                message.securityHealthAnalyticsCustomModule = $root.google.cloud.securitycentermanagement.v1.SecurityHealthAnalyticsCustomModule.fromObject(object.securityHealthAnalyticsCustomModule, long + 1);
                             }
                             if (object.validateOnly != null)
                                 message.validateOnly = Boolean(object.validateOnly);
@@ -5801,7 +6024,7 @@
                         function DeleteSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5876,9 +6099,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        DeleteSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5894,7 +6121,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5925,9 +6152,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        DeleteSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -5945,9 +6176,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest} DeleteSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        DeleteSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        DeleteSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.DeleteSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -6031,7 +6266,7 @@
                         function SimulateSecurityHealthAnalyticsCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6116,9 +6351,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error) {
+                        SimulateSecurityHealthAnalyticsCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6130,15 +6369,15 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.decode(reader, reader.uint32());
+                                        message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
-                                        message.resource = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.decode(reader, reader.uint32());
+                                        message.resource = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -6169,19 +6408,23 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message) {
+                        SimulateSecurityHealthAnalyticsCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.customConfig != null && message.hasOwnProperty("customConfig")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.verify(message.customConfig);
+                                var error = $root.google.cloud.securitycentermanagement.v1.CustomConfig.verify(message.customConfig, long + 1);
                                 if (error)
                                     return "customConfig." + error;
                             }
                             if (message.resource != null && message.hasOwnProperty("resource")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.verify(message.resource);
+                                var error = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.verify(message.resource, long + 1);
                                 if (error)
                                     return "resource." + error;
                             }
@@ -6196,21 +6439,25 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest} SimulateSecurityHealthAnalyticsCustomModuleRequest
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object) {
+                        SimulateSecurityHealthAnalyticsCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.customConfig != null) {
                                 if (typeof object.customConfig !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.customConfig: object expected");
-                                message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.fromObject(object.customConfig);
+                                message.customConfig = $root.google.cloud.securitycentermanagement.v1.CustomConfig.fromObject(object.customConfig, long + 1);
                             }
                             if (object.resource != null) {
                                 if (typeof object.resource !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.resource: object expected");
-                                message.resource = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.fromObject(object.resource);
+                                message.resource = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.fromObject(object.resource, long + 1);
                             }
                             return message;
                         };
@@ -6290,7 +6537,7 @@
                             function SimulatedResource(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -6375,9 +6622,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            SimulatedResource.decode = function decode(reader, length, error) {
+                            SimulatedResource.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -6389,15 +6640,15 @@
                                             break;
                                         }
                                     case 2: {
-                                            message.resourceData = $root.google.protobuf.Struct.decode(reader, reader.uint32());
+                                            message.resourceData = $root.google.protobuf.Struct.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 3: {
-                                            message.iamPolicyData = $root.google.iam.v1.Policy.decode(reader, reader.uint32());
+                                            message.iamPolicyData = $root.google.iam.v1.Policy.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -6428,19 +6679,23 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            SimulatedResource.verify = function verify(message) {
+                            SimulatedResource.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.resourceType != null && message.hasOwnProperty("resourceType"))
                                     if (!$util.isString(message.resourceType))
                                         return "resourceType: string expected";
                                 if (message.resourceData != null && message.hasOwnProperty("resourceData")) {
-                                    var error = $root.google.protobuf.Struct.verify(message.resourceData);
+                                    var error = $root.google.protobuf.Struct.verify(message.resourceData, long + 1);
                                     if (error)
                                         return "resourceData." + error;
                                 }
                                 if (message.iamPolicyData != null && message.hasOwnProperty("iamPolicyData")) {
-                                    var error = $root.google.iam.v1.Policy.verify(message.iamPolicyData);
+                                    var error = $root.google.iam.v1.Policy.verify(message.iamPolicyData, long + 1);
                                     if (error)
                                         return "iamPolicyData." + error;
                                 }
@@ -6455,21 +6710,25 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource} SimulatedResource
                              */
-                            SimulatedResource.fromObject = function fromObject(object) {
+                            SimulatedResource.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource();
                                 if (object.resourceType != null)
                                     message.resourceType = String(object.resourceType);
                                 if (object.resourceData != null) {
                                     if (typeof object.resourceData !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.resourceData: object expected");
-                                    message.resourceData = $root.google.protobuf.Struct.fromObject(object.resourceData);
+                                    message.resourceData = $root.google.protobuf.Struct.fromObject(object.resourceData, long + 1);
                                 }
                                 if (object.iamPolicyData != null) {
                                     if (typeof object.iamPolicyData !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleRequest.SimulatedResource.iamPolicyData: object expected");
-                                    message.iamPolicyData = $root.google.iam.v1.Policy.fromObject(object.iamPolicyData);
+                                    message.iamPolicyData = $root.google.iam.v1.Policy.fromObject(object.iamPolicyData, long + 1);
                                 }
                                 return message;
                             };
@@ -6562,7 +6821,7 @@
                             this.sourceProperties = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6710,9 +6969,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SimulatedFinding.decode = function decode(reader, length, error) {
+                        SimulatedFinding.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.SimulatedFinding(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6752,18 +7015,20 @@
                                                 key = reader.string();
                                                 break;
                                             case 2:
-                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                                value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.sourceProperties, key);
                                         message.sourceProperties[key] = value;
                                         break;
                                     }
                                 case 7: {
-                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.eventTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
@@ -6775,7 +7040,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -6806,9 +7071,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SimulatedFinding.verify = function verify(message) {
+                        SimulatedFinding.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -6835,13 +7104,13 @@
                                     return "sourceProperties: object expected";
                                 var key = Object.keys(message.sourceProperties);
                                 for (var i = 0; i < key.length; ++i) {
-                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]]);
+                                    var error = $root.google.protobuf.Value.verify(message.sourceProperties[key[i]], long + 1);
                                     if (error)
                                         return "sourceProperties." + error;
                                 }
                             }
                             if (message.eventTime != null && message.hasOwnProperty("eventTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.eventTime, long + 1);
                                 if (error)
                                     return "eventTime." + error;
                             }
@@ -6881,9 +7150,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.SimulatedFinding} SimulatedFinding
                          */
-                        SimulatedFinding.fromObject = function fromObject(object) {
+                        SimulatedFinding.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.SimulatedFinding)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.SimulatedFinding();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -6918,15 +7191,17 @@
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SimulatedFinding.sourceProperties: object expected");
                                 message.sourceProperties = {};
                                 for (var keys = Object.keys(object.sourceProperties), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.sourceProperties, keys[i]);
                                     if (typeof object.sourceProperties[keys[i]] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.SimulatedFinding.sourceProperties: object expected");
-                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]]);
+                                    message.sourceProperties[keys[i]] = $root.google.protobuf.Value.fromObject(object.sourceProperties[keys[i]], long + 1);
                                 }
                             }
                             if (object.eventTime != null) {
                                 if (typeof object.eventTime !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SimulatedFinding.eventTime: object expected");
-                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime);
+                                message.eventTime = $root.google.protobuf.Timestamp.fromObject(object.eventTime, long + 1);
                             }
                             switch (object.severity) {
                             default:
@@ -7037,8 +7312,11 @@
                             var keys2;
                             if (message.sourceProperties && (keys2 = Object.keys(message.sourceProperties)).length) {
                                 object.sourceProperties = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.sourceProperties, keys2[j]);
                                     object.sourceProperties[keys2[j]] = $root.google.protobuf.Value.toObject(message.sourceProperties[keys2[j]], options);
+                                }
                             }
                             if (message.eventTime != null && message.hasOwnProperty("eventTime"))
                                 object.eventTime = $root.google.protobuf.Timestamp.toObject(message.eventTime, options);
@@ -7160,7 +7438,7 @@
                         function SimulateSecurityHealthAnalyticsCustomModuleResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -7225,9 +7503,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleResponse.decode = function decode(reader, length, error) {
+                        SimulateSecurityHealthAnalyticsCustomModuleResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -7235,11 +7517,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.result = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.decode(reader, reader.uint32());
+                                        message.result = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -7270,11 +7552,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleResponse.verify = function verify(message) {
+                        SimulateSecurityHealthAnalyticsCustomModuleResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.result != null && message.hasOwnProperty("result")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.verify(message.result);
+                                var error = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.verify(message.result, long + 1);
                                 if (error)
                                     return "result." + error;
                             }
@@ -7289,14 +7575,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse} SimulateSecurityHealthAnalyticsCustomModuleResponse
                          */
-                        SimulateSecurityHealthAnalyticsCustomModuleResponse.fromObject = function fromObject(object) {
+                        SimulateSecurityHealthAnalyticsCustomModuleResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse();
                             if (object.result != null) {
                                 if (typeof object.result !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.result: object expected");
-                                message.result = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.fromObject(object.result);
+                                message.result = $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.fromObject(object.result, long + 1);
                             }
                             return message;
                         };
@@ -7369,7 +7659,7 @@
                             function SimulatedResult(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -7468,9 +7758,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            SimulatedResult.decode = function decode(reader, length, error) {
+                            SimulatedResult.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -7478,19 +7772,19 @@
                                         break;
                                     switch (tag >>> 3) {
                                     case 1: {
-                                            message.finding = $root.google.cloud.securitycentermanagement.v1.SimulatedFinding.decode(reader, reader.uint32());
+                                            message.finding = $root.google.cloud.securitycentermanagement.v1.SimulatedFinding.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 2: {
-                                            message.noViolation = $root.google.protobuf.Empty.decode(reader, reader.uint32());
+                                            message.noViolation = $root.google.protobuf.Empty.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 3: {
-                                            message.error = $root.google.rpc.Status.decode(reader, reader.uint32());
+                                            message.error = $root.google.rpc.Status.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -7521,14 +7815,18 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            SimulatedResult.verify = function verify(message) {
+                            SimulatedResult.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 var properties = {};
                                 if (message.finding != null && message.hasOwnProperty("finding")) {
                                     properties.result = 1;
                                     {
-                                        var error = $root.google.cloud.securitycentermanagement.v1.SimulatedFinding.verify(message.finding);
+                                        var error = $root.google.cloud.securitycentermanagement.v1.SimulatedFinding.verify(message.finding, long + 1);
                                         if (error)
                                             return "finding." + error;
                                     }
@@ -7538,7 +7836,7 @@
                                         return "result: multiple values";
                                     properties.result = 1;
                                     {
-                                        var error = $root.google.protobuf.Empty.verify(message.noViolation);
+                                        var error = $root.google.protobuf.Empty.verify(message.noViolation, long + 1);
                                         if (error)
                                             return "noViolation." + error;
                                     }
@@ -7548,7 +7846,7 @@
                                         return "result: multiple values";
                                     properties.result = 1;
                                     {
-                                        var error = $root.google.rpc.Status.verify(message.error);
+                                        var error = $root.google.rpc.Status.verify(message.error, long + 1);
                                         if (error)
                                             return "error." + error;
                                     }
@@ -7564,24 +7862,28 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult} SimulatedResult
                              */
-                            SimulatedResult.fromObject = function fromObject(object) {
+                            SimulatedResult.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult();
                                 if (object.finding != null) {
                                     if (typeof object.finding !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.finding: object expected");
-                                    message.finding = $root.google.cloud.securitycentermanagement.v1.SimulatedFinding.fromObject(object.finding);
+                                    message.finding = $root.google.cloud.securitycentermanagement.v1.SimulatedFinding.fromObject(object.finding, long + 1);
                                 }
                                 if (object.noViolation != null) {
                                     if (typeof object.noViolation !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.noViolation: object expected");
-                                    message.noViolation = $root.google.protobuf.Empty.fromObject(object.noViolation);
+                                    message.noViolation = $root.google.protobuf.Empty.fromObject(object.noViolation, long + 1);
                                 }
                                 if (object.error != null) {
                                     if (typeof object.error !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.SimulateSecurityHealthAnalyticsCustomModuleResponse.SimulatedResult.error: object expected");
-                                    message.error = $root.google.rpc.Status.fromObject(object.error);
+                                    message.error = $root.google.rpc.Status.fromObject(object.error, long + 1);
                                 }
                                 return message;
                             };
@@ -7674,7 +7976,7 @@
                         function EffectiveEventThreatDetectionCustomModule(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -7789,9 +8091,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EffectiveEventThreatDetectionCustomModule.decode = function decode(reader, length, error) {
+                        EffectiveEventThreatDetectionCustomModule.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -7803,7 +8109,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.config = $root.google.protobuf.Struct.decode(reader, reader.uint32());
+                                        message.config = $root.google.protobuf.Struct.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -7823,7 +8129,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -7854,14 +8160,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EffectiveEventThreatDetectionCustomModule.verify = function verify(message) {
+                        EffectiveEventThreatDetectionCustomModule.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.config != null && message.hasOwnProperty("config")) {
-                                var error = $root.google.protobuf.Struct.verify(message.config);
+                                var error = $root.google.protobuf.Struct.verify(message.config, long + 1);
                                 if (error)
                                     return "config." + error;
                             }
@@ -7894,16 +8204,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule} EffectiveEventThreatDetectionCustomModule
                          */
-                        EffectiveEventThreatDetectionCustomModule.fromObject = function fromObject(object) {
+                        EffectiveEventThreatDetectionCustomModule.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.config != null) {
                                 if (typeof object.config !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.config: object expected");
-                                message.config = $root.google.protobuf.Struct.fromObject(object.config);
+                                message.config = $root.google.protobuf.Struct.fromObject(object.config, long + 1);
                             }
                             switch (object.enablementState) {
                             default:
@@ -8037,7 +8351,7 @@
                         function ListEffectiveEventThreatDetectionCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8122,9 +8436,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListEffectiveEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -8144,7 +8462,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -8175,9 +8493,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesRequest.verify = function verify(message) {
+                        ListEffectiveEventThreatDetectionCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -8198,9 +8520,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesRequest} ListEffectiveEventThreatDetectionCustomModulesRequest
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListEffectiveEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -8289,7 +8615,7 @@
                             this.effectiveEventThreatDetectionCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8365,9 +8691,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListEffectiveEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -8377,7 +8707,7 @@
                                 case 1: {
                                         if (!(message.effectiveEventThreatDetectionCustomModules && message.effectiveEventThreatDetectionCustomModules.length))
                                             message.effectiveEventThreatDetectionCustomModules = [];
-                                        message.effectiveEventThreatDetectionCustomModules.push($root.google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.decode(reader, reader.uint32()));
+                                        message.effectiveEventThreatDetectionCustomModules.push($root.google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -8385,7 +8715,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -8416,14 +8746,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesResponse.verify = function verify(message) {
+                        ListEffectiveEventThreatDetectionCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.effectiveEventThreatDetectionCustomModules != null && message.hasOwnProperty("effectiveEventThreatDetectionCustomModules")) {
                                 if (!Array.isArray(message.effectiveEventThreatDetectionCustomModules))
                                     return "effectiveEventThreatDetectionCustomModules: array expected";
                                 for (var i = 0; i < message.effectiveEventThreatDetectionCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.verify(message.effectiveEventThreatDetectionCustomModules[i]);
+                                    var error = $root.google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.verify(message.effectiveEventThreatDetectionCustomModules[i], long + 1);
                                     if (error)
                                         return "effectiveEventThreatDetectionCustomModules." + error;
                                 }
@@ -8442,9 +8776,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesResponse} ListEffectiveEventThreatDetectionCustomModulesResponse
                          */
-                        ListEffectiveEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListEffectiveEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesResponse();
                             if (object.effectiveEventThreatDetectionCustomModules) {
                                 if (!Array.isArray(object.effectiveEventThreatDetectionCustomModules))
@@ -8453,7 +8791,7 @@
                                 for (var i = 0; i < object.effectiveEventThreatDetectionCustomModules.length; ++i) {
                                     if (typeof object.effectiveEventThreatDetectionCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ListEffectiveEventThreatDetectionCustomModulesResponse.effectiveEventThreatDetectionCustomModules: object expected");
-                                    message.effectiveEventThreatDetectionCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.fromObject(object.effectiveEventThreatDetectionCustomModules[i]);
+                                    message.effectiveEventThreatDetectionCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.EffectiveEventThreatDetectionCustomModule.fromObject(object.effectiveEventThreatDetectionCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -8537,7 +8875,7 @@
                         function GetEffectiveEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8602,9 +8940,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEffectiveEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        GetEffectiveEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.GetEffectiveEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -8616,7 +8958,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -8647,9 +8989,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEffectiveEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        GetEffectiveEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -8664,9 +9010,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.GetEffectiveEventThreatDetectionCustomModuleRequest} GetEffectiveEventThreatDetectionCustomModuleRequest
                          */
-                        GetEffectiveEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        GetEffectiveEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.GetEffectiveEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.GetEffectiveEventThreatDetectionCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -8750,7 +9100,7 @@
                         function EventThreatDetectionCustomModule(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8895,9 +9245,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EventThreatDetectionCustomModule.decode = function decode(reader, length, error) {
+                        EventThreatDetectionCustomModule.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -8909,7 +9263,7 @@
                                         break;
                                     }
                                 case 2: {
-                                        message.config = $root.google.protobuf.Struct.decode(reader, reader.uint32());
+                                        message.config = $root.google.protobuf.Struct.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -8933,7 +9287,7 @@
                                         break;
                                     }
                                 case 8: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 9: {
@@ -8941,7 +9295,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -8972,14 +9326,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EventThreatDetectionCustomModule.verify = function verify(message) {
+                        EventThreatDetectionCustomModule.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
                             if (message.config != null && message.hasOwnProperty("config")) {
-                                var error = $root.google.protobuf.Struct.verify(message.config);
+                                var error = $root.google.protobuf.Struct.verify(message.config, long + 1);
                                 if (error)
                                     return "config." + error;
                             }
@@ -9006,7 +9364,7 @@
                                 if (!$util.isString(message.description))
                                     return "description: string expected";
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -9024,16 +9382,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule} EventThreatDetectionCustomModule
                          */
-                        EventThreatDetectionCustomModule.fromObject = function fromObject(object) {
+                        EventThreatDetectionCustomModule.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule();
                             if (object.name != null)
                                 message.name = String(object.name);
                             if (object.config != null) {
                                 if (typeof object.config !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.config: object expected");
-                                message.config = $root.google.protobuf.Struct.fromObject(object.config);
+                                message.config = $root.google.protobuf.Struct.fromObject(object.config, long + 1);
                             }
                             if (object.ancestorModule != null)
                                 message.ancestorModule = String(object.ancestorModule);
@@ -9070,7 +9432,7 @@
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.lastEditor != null)
                                 message.lastEditor = String(object.lastEditor);
@@ -9191,7 +9553,7 @@
                         function ListEventThreatDetectionCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9276,9 +9638,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9298,7 +9664,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9329,9 +9695,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEventThreatDetectionCustomModulesRequest.verify = function verify(message) {
+                        ListEventThreatDetectionCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -9352,9 +9722,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesRequest} ListEventThreatDetectionCustomModulesRequest
                          */
-                        ListEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -9443,7 +9817,7 @@
                             this.eventThreatDetectionCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9519,9 +9893,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9531,7 +9909,7 @@
                                 case 1: {
                                         if (!(message.eventThreatDetectionCustomModules && message.eventThreatDetectionCustomModules.length))
                                             message.eventThreatDetectionCustomModules = [];
-                                        message.eventThreatDetectionCustomModules.push($root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32()));
+                                        message.eventThreatDetectionCustomModules.push($root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -9539,7 +9917,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9570,14 +9948,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEventThreatDetectionCustomModulesResponse.verify = function verify(message) {
+                        ListEventThreatDetectionCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.eventThreatDetectionCustomModules != null && message.hasOwnProperty("eventThreatDetectionCustomModules")) {
                                 if (!Array.isArray(message.eventThreatDetectionCustomModules))
                                     return "eventThreatDetectionCustomModules: array expected";
                                 for (var i = 0; i < message.eventThreatDetectionCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModules[i]);
+                                    var error = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModules[i], long + 1);
                                     if (error)
                                         return "eventThreatDetectionCustomModules." + error;
                                 }
@@ -9596,9 +9978,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesResponse} ListEventThreatDetectionCustomModulesResponse
                          */
-                        ListEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesResponse();
                             if (object.eventThreatDetectionCustomModules) {
                                 if (!Array.isArray(object.eventThreatDetectionCustomModules))
@@ -9607,7 +9993,7 @@
                                 for (var i = 0; i < object.eventThreatDetectionCustomModules.length; ++i) {
                                     if (typeof object.eventThreatDetectionCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ListEventThreatDetectionCustomModulesResponse.eventThreatDetectionCustomModules: object expected");
-                                    message.eventThreatDetectionCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModules[i]);
+                                    message.eventThreatDetectionCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -9693,7 +10079,7 @@
                         function ListDescendantEventThreatDetectionCustomModulesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9778,9 +10164,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListDescendantEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error) {
+                        ListDescendantEventThreatDetectionCustomModulesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9800,7 +10190,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9831,9 +10221,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListDescendantEventThreatDetectionCustomModulesRequest.verify = function verify(message) {
+                        ListDescendantEventThreatDetectionCustomModulesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -9854,9 +10248,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesRequest} ListDescendantEventThreatDetectionCustomModulesRequest
                          */
-                        ListDescendantEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object) {
+                        ListDescendantEventThreatDetectionCustomModulesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -9945,7 +10343,7 @@
                             this.eventThreatDetectionCustomModules = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10021,9 +10419,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListDescendantEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error) {
+                        ListDescendantEventThreatDetectionCustomModulesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10033,7 +10435,7 @@
                                 case 1: {
                                         if (!(message.eventThreatDetectionCustomModules && message.eventThreatDetectionCustomModules.length))
                                             message.eventThreatDetectionCustomModules = [];
-                                        message.eventThreatDetectionCustomModules.push($root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32()));
+                                        message.eventThreatDetectionCustomModules.push($root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -10041,7 +10443,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10072,14 +10474,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListDescendantEventThreatDetectionCustomModulesResponse.verify = function verify(message) {
+                        ListDescendantEventThreatDetectionCustomModulesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.eventThreatDetectionCustomModules != null && message.hasOwnProperty("eventThreatDetectionCustomModules")) {
                                 if (!Array.isArray(message.eventThreatDetectionCustomModules))
                                     return "eventThreatDetectionCustomModules: array expected";
                                 for (var i = 0; i < message.eventThreatDetectionCustomModules.length; ++i) {
-                                    var error = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModules[i]);
+                                    var error = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModules[i], long + 1);
                                     if (error)
                                         return "eventThreatDetectionCustomModules." + error;
                                 }
@@ -10098,9 +10504,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesResponse} ListDescendantEventThreatDetectionCustomModulesResponse
                          */
-                        ListDescendantEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object) {
+                        ListDescendantEventThreatDetectionCustomModulesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesResponse();
                             if (object.eventThreatDetectionCustomModules) {
                                 if (!Array.isArray(object.eventThreatDetectionCustomModules))
@@ -10109,7 +10519,7 @@
                                 for (var i = 0; i < object.eventThreatDetectionCustomModules.length; ++i) {
                                     if (typeof object.eventThreatDetectionCustomModules[i] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ListDescendantEventThreatDetectionCustomModulesResponse.eventThreatDetectionCustomModules: object expected");
-                                    message.eventThreatDetectionCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModules[i]);
+                                    message.eventThreatDetectionCustomModules[i] = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModules[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -10193,7 +10603,7 @@
                         function GetEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10258,9 +10668,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        GetEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.GetEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10272,7 +10686,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10303,9 +10717,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        GetEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -10320,9 +10738,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.GetEventThreatDetectionCustomModuleRequest} GetEventThreatDetectionCustomModuleRequest
                          */
-                        GetEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        GetEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.GetEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.GetEventThreatDetectionCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -10400,7 +10822,7 @@
                         function CreateEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10485,9 +10907,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        CreateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.CreateEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10499,7 +10925,7 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.eventThreatDetectionCustomModule = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32());
+                                        message.eventThreatDetectionCustomModule = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
@@ -10507,7 +10933,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10538,14 +10964,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        CreateEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
                             if (message.eventThreatDetectionCustomModule != null && message.hasOwnProperty("eventThreatDetectionCustomModule")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModule);
+                                var error = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModule, long + 1);
                                 if (error)
                                     return "eventThreatDetectionCustomModule." + error;
                             }
@@ -10563,16 +10993,20 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.CreateEventThreatDetectionCustomModuleRequest} CreateEventThreatDetectionCustomModuleRequest
                          */
-                        CreateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        CreateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.CreateEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.CreateEventThreatDetectionCustomModuleRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
                             if (object.eventThreatDetectionCustomModule != null) {
                                 if (typeof object.eventThreatDetectionCustomModule !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.CreateEventThreatDetectionCustomModuleRequest.eventThreatDetectionCustomModule: object expected");
-                                message.eventThreatDetectionCustomModule = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModule);
+                                message.eventThreatDetectionCustomModule = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModule, long + 1);
                             }
                             if (object.validateOnly != null)
                                 message.validateOnly = Boolean(object.validateOnly);
@@ -10657,7 +11091,7 @@
                         function UpdateEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10742,9 +11176,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        UpdateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10752,11 +11190,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.eventThreatDetectionCustomModule = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32());
+                                        message.eventThreatDetectionCustomModule = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -10764,7 +11202,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10795,16 +11233,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        UpdateEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
                             if (message.eventThreatDetectionCustomModule != null && message.hasOwnProperty("eventThreatDetectionCustomModule")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModule);
+                                var error = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.verify(message.eventThreatDetectionCustomModule, long + 1);
                                 if (error)
                                     return "eventThreatDetectionCustomModule." + error;
                             }
@@ -10822,19 +11264,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest} UpdateEventThreatDetectionCustomModuleRequest
                          */
-                        UpdateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        UpdateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest();
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             if (object.eventThreatDetectionCustomModule != null) {
                                 if (typeof object.eventThreatDetectionCustomModule !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.UpdateEventThreatDetectionCustomModuleRequest.eventThreatDetectionCustomModule: object expected");
-                                message.eventThreatDetectionCustomModule = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModule);
+                                message.eventThreatDetectionCustomModule = $root.google.cloud.securitycentermanagement.v1.EventThreatDetectionCustomModule.fromObject(object.eventThreatDetectionCustomModule, long + 1);
                             }
                             if (object.validateOnly != null)
                                 message.validateOnly = Boolean(object.validateOnly);
@@ -10918,7 +11364,7 @@
                         function DeleteEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10993,9 +11439,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        DeleteEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.DeleteEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -11011,7 +11461,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -11042,9 +11492,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        DeleteEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -11062,9 +11516,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.DeleteEventThreatDetectionCustomModuleRequest} DeleteEventThreatDetectionCustomModuleRequest
                          */
-                        DeleteEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        DeleteEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.DeleteEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.DeleteEventThreatDetectionCustomModuleRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -11148,7 +11606,7 @@
                         function ValidateEventThreatDetectionCustomModuleRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -11233,9 +11691,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ValidateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error) {
+                        ValidateEventThreatDetectionCustomModuleRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -11255,7 +11717,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -11286,9 +11748,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ValidateEventThreatDetectionCustomModuleRequest.verify = function verify(message) {
+                        ValidateEventThreatDetectionCustomModuleRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -11309,9 +11775,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleRequest} ValidateEventThreatDetectionCustomModuleRequest
                          */
-                        ValidateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object) {
+                        ValidateEventThreatDetectionCustomModuleRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -11399,7 +11869,7 @@
                             this.errors = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -11465,9 +11935,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ValidateEventThreatDetectionCustomModuleResponse.decode = function decode(reader, length, error) {
+                        ValidateEventThreatDetectionCustomModuleResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -11477,11 +11951,11 @@
                                 case 2: {
                                         if (!(message.errors && message.errors.length))
                                             message.errors = [];
-                                        message.errors.push($root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.decode(reader, reader.uint32()));
+                                        message.errors.push($root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -11512,14 +11986,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ValidateEventThreatDetectionCustomModuleResponse.verify = function verify(message) {
+                        ValidateEventThreatDetectionCustomModuleResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.errors != null && message.hasOwnProperty("errors")) {
                                 if (!Array.isArray(message.errors))
                                     return "errors: array expected";
                                 for (var i = 0; i < message.errors.length; ++i) {
-                                    var error = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.verify(message.errors[i]);
+                                    var error = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.verify(message.errors[i], long + 1);
                                     if (error)
                                         return "errors." + error;
                                 }
@@ -11535,9 +12013,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse} ValidateEventThreatDetectionCustomModuleResponse
                          */
-                        ValidateEventThreatDetectionCustomModuleResponse.fromObject = function fromObject(object) {
+                        ValidateEventThreatDetectionCustomModuleResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse();
                             if (object.errors) {
                                 if (!Array.isArray(object.errors))
@@ -11546,7 +12028,7 @@
                                 for (var i = 0; i < object.errors.length; ++i) {
                                     if (typeof object.errors[i] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.errors: object expected");
-                                    message.errors[i] = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.fromObject(object.errors[i]);
+                                    message.errors[i] = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.fromObject(object.errors[i], long + 1);
                                 }
                             }
                             return message;
@@ -11624,7 +12106,7 @@
                             function CustomModuleValidationError(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -11734,9 +12216,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            CustomModuleValidationError.decode = function decode(reader, length, error) {
+                            CustomModuleValidationError.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -11752,15 +12238,15 @@
                                             break;
                                         }
                                     case 3: {
-                                            message.start = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.decode(reader, reader.uint32());
+                                            message.start = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     case 4: {
-                                            message.end = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.decode(reader, reader.uint32());
+                                            message.end = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.decode(reader, reader.uint32(), undefined, long + 1);
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -11791,9 +12277,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            CustomModuleValidationError.verify = function verify(message) {
+                            CustomModuleValidationError.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 var properties = {};
                                 if (message.description != null && message.hasOwnProperty("description"))
                                     if (!$util.isString(message.description))
@@ -11804,7 +12294,7 @@
                                 if (message.start != null && message.hasOwnProperty("start")) {
                                     properties._start = 1;
                                     {
-                                        var error = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.verify(message.start);
+                                        var error = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.verify(message.start, long + 1);
                                         if (error)
                                             return "start." + error;
                                     }
@@ -11812,7 +12302,7 @@
                                 if (message.end != null && message.hasOwnProperty("end")) {
                                     properties._end = 1;
                                     {
-                                        var error = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.verify(message.end);
+                                        var error = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.verify(message.end, long + 1);
                                         if (error)
                                             return "end." + error;
                                     }
@@ -11828,9 +12318,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError} CustomModuleValidationError
                              */
-                            CustomModuleValidationError.fromObject = function fromObject(object) {
+                            CustomModuleValidationError.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError();
                                 if (object.description != null)
                                     message.description = String(object.description);
@@ -11839,12 +12333,12 @@
                                 if (object.start != null) {
                                     if (typeof object.start !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.start: object expected");
-                                    message.start = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.fromObject(object.start);
+                                    message.start = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.fromObject(object.start, long + 1);
                                 }
                                 if (object.end != null) {
                                     if (typeof object.end !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.CustomModuleValidationError.end: object expected");
-                                    message.end = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.fromObject(object.end);
+                                    message.end = $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position.fromObject(object.end, long + 1);
                                 }
                                 return message;
                             };
@@ -11933,7 +12427,7 @@
                             function Position(properties) {
                                 if (properties)
                                     for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                        if (properties[keys[i]] != null)
+                                        if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                             this[keys[i]] = properties[keys[i]];
                             }
     
@@ -12008,9 +12502,13 @@
                              * @throws {Error} If the payload is not a reader or valid buffer
                              * @throws {$protobuf.util.ProtocolError} If required fields are missing
                              */
-                            Position.decode = function decode(reader, length, error) {
+                            Position.decode = function decode(reader, length, error, long) {
                                 if (!(reader instanceof $Reader))
                                     reader = $Reader.create(reader);
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $Reader.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position();
                                 while (reader.pos < end) {
                                     var tag = reader.uint32();
@@ -12026,7 +12524,7 @@
                                             break;
                                         }
                                     default:
-                                        reader.skipType(tag & 7);
+                                        reader.skipType(tag & 7, long);
                                         break;
                                     }
                                 }
@@ -12057,9 +12555,13 @@
                              * @param {Object.<string,*>} message Plain object to verify
                              * @returns {string|null} `null` if valid, otherwise the reason why it is not
                              */
-                            Position.verify = function verify(message) {
+                            Position.verify = function verify(message, long) {
                                 if (typeof message !== "object" || message === null)
                                     return "object expected";
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    return "maximum nesting depth exceeded";
                                 if (message.lineNumber != null && message.hasOwnProperty("lineNumber"))
                                     if (!$util.isInteger(message.lineNumber))
                                         return "lineNumber: integer expected";
@@ -12077,9 +12579,13 @@
                              * @param {Object.<string,*>} object Plain object
                              * @returns {google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position} Position
                              */
-                            Position.fromObject = function fromObject(object) {
+                            Position.fromObject = function fromObject(object, long) {
                                 if (object instanceof $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position)
                                     return object;
+                                if (long === undefined)
+                                    long = 0;
+                                if (long > $util.recursionLimit)
+                                    throw Error("maximum nesting depth exceeded");
                                 var message = new $root.google.cloud.securitycentermanagement.v1.ValidateEventThreatDetectionCustomModuleResponse.Position();
                                 if (object.lineNumber != null)
                                     message.lineNumber = object.lineNumber | 0;
@@ -12165,7 +12671,7 @@
                         function GetSecurityCenterServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12240,9 +12746,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetSecurityCenterServiceRequest.decode = function decode(reader, length, error) {
+                        GetSecurityCenterServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.GetSecurityCenterServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12258,7 +12768,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12289,9 +12799,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetSecurityCenterServiceRequest.verify = function verify(message) {
+                        GetSecurityCenterServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -12309,9 +12823,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.GetSecurityCenterServiceRequest} GetSecurityCenterServiceRequest
                          */
-                        GetSecurityCenterServiceRequest.fromObject = function fromObject(object) {
+                        GetSecurityCenterServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.GetSecurityCenterServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.GetSecurityCenterServiceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -12396,7 +12914,7 @@
                         function ListSecurityCenterServicesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12491,9 +13009,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSecurityCenterServicesRequest.decode = function decode(reader, length, error) {
+                        ListSecurityCenterServicesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListSecurityCenterServicesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12517,7 +13039,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12548,9 +13070,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSecurityCenterServicesRequest.verify = function verify(message) {
+                        ListSecurityCenterServicesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -12574,9 +13100,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListSecurityCenterServicesRequest} ListSecurityCenterServicesRequest
                          */
-                        ListSecurityCenterServicesRequest.fromObject = function fromObject(object) {
+                        ListSecurityCenterServicesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListSecurityCenterServicesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListSecurityCenterServicesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -12670,7 +13200,7 @@
                             this.securityCenterServices = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12746,9 +13276,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListSecurityCenterServicesResponse.decode = function decode(reader, length, error) {
+                        ListSecurityCenterServicesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.ListSecurityCenterServicesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12758,7 +13292,7 @@
                                 case 1: {
                                         if (!(message.securityCenterServices && message.securityCenterServices.length))
                                             message.securityCenterServices = [];
-                                        message.securityCenterServices.push($root.google.cloud.securitycentermanagement.v1.SecurityCenterService.decode(reader, reader.uint32()));
+                                        message.securityCenterServices.push($root.google.cloud.securitycentermanagement.v1.SecurityCenterService.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -12766,7 +13300,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12797,14 +13331,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListSecurityCenterServicesResponse.verify = function verify(message) {
+                        ListSecurityCenterServicesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityCenterServices != null && message.hasOwnProperty("securityCenterServices")) {
                                 if (!Array.isArray(message.securityCenterServices))
                                     return "securityCenterServices: array expected";
                                 for (var i = 0; i < message.securityCenterServices.length; ++i) {
-                                    var error = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.verify(message.securityCenterServices[i]);
+                                    var error = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.verify(message.securityCenterServices[i], long + 1);
                                     if (error)
                                         return "securityCenterServices." + error;
                                 }
@@ -12823,9 +13361,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.ListSecurityCenterServicesResponse} ListSecurityCenterServicesResponse
                          */
-                        ListSecurityCenterServicesResponse.fromObject = function fromObject(object) {
+                        ListSecurityCenterServicesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.ListSecurityCenterServicesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.ListSecurityCenterServicesResponse();
                             if (object.securityCenterServices) {
                                 if (!Array.isArray(object.securityCenterServices))
@@ -12834,7 +13376,7 @@
                                 for (var i = 0; i < object.securityCenterServices.length; ++i) {
                                     if (typeof object.securityCenterServices[i] !== "object")
                                         throw TypeError(".google.cloud.securitycentermanagement.v1.ListSecurityCenterServicesResponse.securityCenterServices: object expected");
-                                    message.securityCenterServices[i] = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.fromObject(object.securityCenterServices[i]);
+                                    message.securityCenterServices[i] = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.fromObject(object.securityCenterServices[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -12920,7 +13462,7 @@
                         function UpdateSecurityCenterServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -13005,9 +13547,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateSecurityCenterServiceRequest.decode = function decode(reader, length, error) {
+                        UpdateSecurityCenterServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.securitycentermanagement.v1.UpdateSecurityCenterServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -13015,11 +13561,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.securityCenterService = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.decode(reader, reader.uint32());
+                                        message.securityCenterService = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 3: {
@@ -13027,7 +13573,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -13058,16 +13604,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateSecurityCenterServiceRequest.verify = function verify(message) {
+                        UpdateSecurityCenterServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.securityCenterService != null && message.hasOwnProperty("securityCenterService")) {
-                                var error = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.verify(message.securityCenterService);
+                                var error = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.verify(message.securityCenterService, long + 1);
                                 if (error)
                                     return "securityCenterService." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -13085,19 +13635,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.securitycentermanagement.v1.UpdateSecurityCenterServiceRequest} UpdateSecurityCenterServiceRequest
                          */
-                        UpdateSecurityCenterServiceRequest.fromObject = function fromObject(object) {
+                        UpdateSecurityCenterServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.securitycentermanagement.v1.UpdateSecurityCenterServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.securitycentermanagement.v1.UpdateSecurityCenterServiceRequest();
                             if (object.securityCenterService != null) {
                                 if (typeof object.securityCenterService !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.UpdateSecurityCenterServiceRequest.securityCenterService: object expected");
-                                message.securityCenterService = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.fromObject(object.securityCenterService);
+                                message.securityCenterService = $root.google.cloud.securitycentermanagement.v1.SecurityCenterService.fromObject(object.securityCenterService, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.securitycentermanagement.v1.UpdateSecurityCenterServiceRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             if (object.validateOnly != null)
                                 message.validateOnly = Boolean(object.validateOnly);
@@ -13200,7 +13754,7 @@
                     this.rules = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -13276,9 +13830,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Http.decode = function decode(reader, length, error) {
+                Http.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -13288,7 +13846,7 @@
                         case 1: {
                                 if (!(message.rules && message.rules.length))
                                     message.rules = [];
-                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
@@ -13296,7 +13854,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -13327,14 +13885,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Http.verify = function verify(message) {
+                Http.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.rules != null && message.hasOwnProperty("rules")) {
                         if (!Array.isArray(message.rules))
                             return "rules: array expected";
                         for (var i = 0; i < message.rules.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.rules[i]);
+                            var error = $root.google.api.HttpRule.verify(message.rules[i], long + 1);
                             if (error)
                                 return "rules." + error;
                         }
@@ -13353,9 +13915,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Http} Http
                  */
-                Http.fromObject = function fromObject(object) {
+                Http.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Http)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Http();
                     if (object.rules) {
                         if (!Array.isArray(object.rules))
@@ -13364,7 +13930,7 @@
                         for (var i = 0; i < object.rules.length; ++i) {
                             if (typeof object.rules[i] !== "object")
                                 throw TypeError(".google.api.Http.rules: object expected");
-                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]);
+                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i], long + 1);
                         }
                     }
                     if (object.fullyDecodeReservedExpansion != null)
@@ -13458,7 +14024,7 @@
                     this.additionalBindings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -13628,9 +14194,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                HttpRule.decode = function decode(reader, length, error) {
+                HttpRule.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -13662,7 +14232,7 @@
                                 break;
                             }
                         case 8: {
-                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32());
+                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 7: {
@@ -13676,11 +14246,11 @@
                         case 11: {
                                 if (!(message.additionalBindings && message.additionalBindings.length))
                                     message.additionalBindings = [];
-                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -13711,9 +14281,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                HttpRule.verify = function verify(message) {
+                HttpRule.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     var properties = {};
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
@@ -13756,7 +14330,7 @@
                             return "pattern: multiple values";
                         properties.pattern = 1;
                         {
-                            var error = $root.google.api.CustomHttpPattern.verify(message.custom);
+                            var error = $root.google.api.CustomHttpPattern.verify(message.custom, long + 1);
                             if (error)
                                 return "custom." + error;
                         }
@@ -13771,7 +14345,7 @@
                         if (!Array.isArray(message.additionalBindings))
                             return "additionalBindings: array expected";
                         for (var i = 0; i < message.additionalBindings.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]);
+                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i], long + 1);
                             if (error)
                                 return "additionalBindings." + error;
                         }
@@ -13787,9 +14361,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.HttpRule} HttpRule
                  */
-                HttpRule.fromObject = function fromObject(object) {
+                HttpRule.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.HttpRule)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.HttpRule();
                     if (object.selector != null)
                         message.selector = String(object.selector);
@@ -13806,7 +14384,7 @@
                     if (object.custom != null) {
                         if (typeof object.custom !== "object")
                             throw TypeError(".google.api.HttpRule.custom: object expected");
-                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom);
+                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom, long + 1);
                     }
                     if (object.body != null)
                         message.body = String(object.body);
@@ -13819,7 +14397,7 @@
                         for (var i = 0; i < object.additionalBindings.length; ++i) {
                             if (typeof object.additionalBindings[i] !== "object")
                                 throw TypeError(".google.api.HttpRule.additionalBindings: object expected");
-                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]);
+                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i], long + 1);
                         }
                     }
                     return message;
@@ -13939,7 +14517,7 @@
                 function CustomHttpPattern(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14014,9 +14592,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CustomHttpPattern.decode = function decode(reader, length, error) {
+                CustomHttpPattern.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14032,7 +14614,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14063,9 +14645,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CustomHttpPattern.verify = function verify(message) {
+                CustomHttpPattern.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.kind != null && message.hasOwnProperty("kind"))
                         if (!$util.isString(message.kind))
                             return "kind: string expected";
@@ -14083,9 +14669,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CustomHttpPattern} CustomHttpPattern
                  */
-                CustomHttpPattern.fromObject = function fromObject(object) {
+                CustomHttpPattern.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CustomHttpPattern)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CustomHttpPattern();
                     if (object.kind != null)
                         message.kind = String(object.kind);
@@ -14170,7 +14760,7 @@
                     this.destinations = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14259,9 +14849,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CommonLanguageSettings.decode = function decode(reader, length, error) {
+                CommonLanguageSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CommonLanguageSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14284,11 +14878,11 @@
                                 break;
                             }
                         case 3: {
-                                message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.decode(reader, reader.uint32());
+                                message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14319,9 +14913,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CommonLanguageSettings.verify = function verify(message) {
+                CommonLanguageSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
                         if (!$util.isString(message.referenceDocsUri))
                             return "referenceDocsUri: string expected";
@@ -14339,7 +14937,7 @@
                             }
                     }
                     if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) {
-                        var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration);
+                        var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration, long + 1);
                         if (error)
                             return "selectiveGapicGeneration." + error;
                     }
@@ -14354,9 +14952,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings
                  */
-                CommonLanguageSettings.fromObject = function fromObject(object) {
+                CommonLanguageSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CommonLanguageSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CommonLanguageSettings();
                     if (object.referenceDocsUri != null)
                         message.referenceDocsUri = String(object.referenceDocsUri);
@@ -14388,7 +14990,7 @@
                     if (object.selectiveGapicGeneration != null) {
                         if (typeof object.selectiveGapicGeneration !== "object")
                             throw TypeError(".google.api.CommonLanguageSettings.selectiveGapicGeneration: object expected");
-                        message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration);
+                        message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration, long + 1);
                     }
                     return message;
                 };
@@ -14483,7 +15085,7 @@
                 function ClientLibrarySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14648,9 +15250,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ClientLibrarySettings.decode = function decode(reader, length, error) {
+                ClientLibrarySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ClientLibrarySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14670,39 +15276,39 @@
                                 break;
                             }
                         case 21: {
-                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32());
+                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 22: {
-                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32());
+                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 23: {
-                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32());
+                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 24: {
-                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32());
+                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 25: {
-                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32());
+                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 26: {
-                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32());
+                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 27: {
-                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32());
+                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 28: {
-                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32());
+                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14733,9 +15339,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ClientLibrarySettings.verify = function verify(message) {
+                ClientLibrarySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.version != null && message.hasOwnProperty("version"))
                         if (!$util.isString(message.version))
                             return "version: string expected";
@@ -14757,42 +15367,42 @@
                         if (typeof message.restNumericEnums !== "boolean")
                             return "restNumericEnums: boolean expected";
                     if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) {
-                        var error = $root.google.api.JavaSettings.verify(message.javaSettings);
+                        var error = $root.google.api.JavaSettings.verify(message.javaSettings, long + 1);
                         if (error)
                             return "javaSettings." + error;
                     }
                     if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) {
-                        var error = $root.google.api.CppSettings.verify(message.cppSettings);
+                        var error = $root.google.api.CppSettings.verify(message.cppSettings, long + 1);
                         if (error)
                             return "cppSettings." + error;
                     }
                     if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) {
-                        var error = $root.google.api.PhpSettings.verify(message.phpSettings);
+                        var error = $root.google.api.PhpSettings.verify(message.phpSettings, long + 1);
                         if (error)
                             return "phpSettings." + error;
                     }
                     if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) {
-                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings);
+                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings, long + 1);
                         if (error)
                             return "pythonSettings." + error;
                     }
                     if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) {
-                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings);
+                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings, long + 1);
                         if (error)
                             return "nodeSettings." + error;
                     }
                     if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) {
-                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings);
+                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings, long + 1);
                         if (error)
                             return "dotnetSettings." + error;
                     }
                     if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) {
-                        var error = $root.google.api.RubySettings.verify(message.rubySettings);
+                        var error = $root.google.api.RubySettings.verify(message.rubySettings, long + 1);
                         if (error)
                             return "rubySettings." + error;
                     }
                     if (message.goSettings != null && message.hasOwnProperty("goSettings")) {
-                        var error = $root.google.api.GoSettings.verify(message.goSettings);
+                        var error = $root.google.api.GoSettings.verify(message.goSettings, long + 1);
                         if (error)
                             return "goSettings." + error;
                     }
@@ -14807,9 +15417,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings
                  */
-                ClientLibrarySettings.fromObject = function fromObject(object) {
+                ClientLibrarySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ClientLibrarySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ClientLibrarySettings();
                     if (object.version != null)
                         message.version = String(object.version);
@@ -14858,42 +15472,42 @@
                     if (object.javaSettings != null) {
                         if (typeof object.javaSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.javaSettings: object expected");
-                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings);
+                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings, long + 1);
                     }
                     if (object.cppSettings != null) {
                         if (typeof object.cppSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.cppSettings: object expected");
-                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings);
+                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings, long + 1);
                     }
                     if (object.phpSettings != null) {
                         if (typeof object.phpSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.phpSettings: object expected");
-                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings);
+                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings, long + 1);
                     }
                     if (object.pythonSettings != null) {
                         if (typeof object.pythonSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.pythonSettings: object expected");
-                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings);
+                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings, long + 1);
                     }
                     if (object.nodeSettings != null) {
                         if (typeof object.nodeSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.nodeSettings: object expected");
-                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings);
+                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings, long + 1);
                     }
                     if (object.dotnetSettings != null) {
                         if (typeof object.dotnetSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.dotnetSettings: object expected");
-                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings);
+                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings, long + 1);
                     }
                     if (object.rubySettings != null) {
                         if (typeof object.rubySettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.rubySettings: object expected");
-                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings);
+                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings, long + 1);
                     }
                     if (object.goSettings != null) {
                         if (typeof object.goSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.goSettings: object expected");
-                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings);
+                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings, long + 1);
                     }
                     return message;
                 };
@@ -15011,7 +15625,7 @@
                     this.librarySettings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -15179,9 +15793,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Publishing.decode = function decode(reader, length, error) {
+                Publishing.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Publishing();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15191,7 +15809,7 @@
                         case 2: {
                                 if (!(message.methodSettings && message.methodSettings.length))
                                     message.methodSettings = [];
-                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32()));
+                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 101: {
@@ -15227,7 +15845,7 @@
                         case 109: {
                                 if (!(message.librarySettings && message.librarySettings.length))
                                     message.librarySettings = [];
-                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32()));
+                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 110: {
@@ -15239,7 +15857,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -15270,14 +15888,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Publishing.verify = function verify(message) {
+                Publishing.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.methodSettings != null && message.hasOwnProperty("methodSettings")) {
                         if (!Array.isArray(message.methodSettings))
                             return "methodSettings: array expected";
                         for (var i = 0; i < message.methodSettings.length; ++i) {
-                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i]);
+                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i], long + 1);
                             if (error)
                                 return "methodSettings." + error;
                         }
@@ -15322,7 +15944,7 @@
                         if (!Array.isArray(message.librarySettings))
                             return "librarySettings: array expected";
                         for (var i = 0; i < message.librarySettings.length; ++i) {
-                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i]);
+                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i], long + 1);
                             if (error)
                                 return "librarySettings." + error;
                         }
@@ -15344,9 +15966,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Publishing} Publishing
                  */
-                Publishing.fromObject = function fromObject(object) {
+                Publishing.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Publishing)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Publishing();
                     if (object.methodSettings) {
                         if (!Array.isArray(object.methodSettings))
@@ -15355,7 +15981,7 @@
                         for (var i = 0; i < object.methodSettings.length; ++i) {
                             if (typeof object.methodSettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.methodSettings: object expected");
-                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i]);
+                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i], long + 1);
                         }
                     }
                     if (object.newIssueUri != null)
@@ -15422,7 +16048,7 @@
                         for (var i = 0; i < object.librarySettings.length; ++i) {
                             if (typeof object.librarySettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.librarySettings: object expected");
-                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i]);
+                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i], long + 1);
                         }
                     }
                     if (object.protoReferenceDocumentationUri != null)
@@ -15546,7 +16172,7 @@
                     this.serviceClassNames = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -15632,9 +16258,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                JavaSettings.decode = function decode(reader, length, error) {
+                JavaSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.JavaSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15661,19 +16291,21 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.serviceClassNames, key);
                                 message.serviceClassNames[key] = value;
                                 break;
                             }
                         case 3: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -15704,9 +16336,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                JavaSettings.verify = function verify(message) {
+                JavaSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage"))
                         if (!$util.isString(message.libraryPackage))
                             return "libraryPackage: string expected";
@@ -15719,7 +16355,7 @@
                                 return "serviceClassNames: string{k:string} expected";
                     }
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -15734,9 +16370,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.JavaSettings} JavaSettings
                  */
-                JavaSettings.fromObject = function fromObject(object) {
+                JavaSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.JavaSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.JavaSettings();
                     if (object.libraryPackage != null)
                         message.libraryPackage = String(object.libraryPackage);
@@ -15744,13 +16384,16 @@
                         if (typeof object.serviceClassNames !== "object")
                             throw TypeError(".google.api.JavaSettings.serviceClassNames: object expected");
                         message.serviceClassNames = {};
-                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.serviceClassNames, keys[i]);
                             message.serviceClassNames[keys[i]] = String(object.serviceClassNames[keys[i]]);
+                        }
                     }
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.JavaSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -15779,8 +16422,11 @@
                     var keys2;
                     if (message.serviceClassNames && (keys2 = Object.keys(message.serviceClassNames)).length) {
                         object.serviceClassNames = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.serviceClassNames, keys2[j]);
                             object.serviceClassNames[keys2[j]] = message.serviceClassNames[keys2[j]];
+                        }
                     }
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
@@ -15836,7 +16482,7 @@
                 function CppSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -15901,9 +16547,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CppSettings.decode = function decode(reader, length, error) {
+                CppSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CppSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15911,11 +16561,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -15946,11 +16596,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CppSettings.verify = function verify(message) {
+                CppSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -15965,14 +16619,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CppSettings} CppSettings
                  */
-                CppSettings.fromObject = function fromObject(object) {
+                CppSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CppSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CppSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.CppSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -16046,7 +16704,7 @@
                 function PhpSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16111,9 +16769,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PhpSettings.decode = function decode(reader, length, error) {
+                PhpSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PhpSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16121,11 +16783,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16156,11 +16818,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PhpSettings.verify = function verify(message) {
+                PhpSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -16175,14 +16841,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PhpSettings} PhpSettings
                  */
-                PhpSettings.fromObject = function fromObject(object) {
+                PhpSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PhpSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PhpSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PhpSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -16257,7 +16927,7 @@
                 function PythonSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16332,9 +17002,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PythonSettings.decode = function decode(reader, length, error) {
+                PythonSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16342,15 +17016,15 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 2: {
-                                message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.decode(reader, reader.uint32());
+                                message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16381,16 +17055,20 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PythonSettings.verify = function verify(message) {
+                PythonSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
                     if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) {
-                        var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures);
+                        var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures, long + 1);
                         if (error)
                             return "experimentalFeatures." + error;
                     }
@@ -16405,19 +17083,23 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PythonSettings} PythonSettings
                  */
-                PythonSettings.fromObject = function fromObject(object) {
+                PythonSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PythonSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PythonSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PythonSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     if (object.experimentalFeatures != null) {
                         if (typeof object.experimentalFeatures !== "object")
                             throw TypeError(".google.api.PythonSettings.experimentalFeatures: object expected");
-                        message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures);
+                        message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures, long + 1);
                     }
                     return message;
                 };
@@ -16494,7 +17176,7 @@
                     function ExperimentalFeatures(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -16579,9 +17261,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ExperimentalFeatures.decode = function decode(reader, length, error) {
+                    ExperimentalFeatures.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings.ExperimentalFeatures();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -16601,7 +17287,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -16632,9 +17318,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ExperimentalFeatures.verify = function verify(message) {
+                    ExperimentalFeatures.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
                             if (typeof message.restAsyncIoEnabled !== "boolean")
                                 return "restAsyncIoEnabled: boolean expected";
@@ -16655,9 +17345,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
                      */
-                    ExperimentalFeatures.fromObject = function fromObject(object) {
+                    ExperimentalFeatures.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.api.PythonSettings.ExperimentalFeatures)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.api.PythonSettings.ExperimentalFeatures();
                         if (object.restAsyncIoEnabled != null)
                             message.restAsyncIoEnabled = Boolean(object.restAsyncIoEnabled);
@@ -16747,7 +17441,7 @@
                 function NodeSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16812,9 +17506,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                NodeSettings.decode = function decode(reader, length, error) {
+                NodeSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.NodeSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16822,11 +17520,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16857,11 +17555,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                NodeSettings.verify = function verify(message) {
+                NodeSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -16876,14 +17578,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.NodeSettings} NodeSettings
                  */
-                NodeSettings.fromObject = function fromObject(object) {
+                NodeSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.NodeSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.NodeSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.NodeSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -16967,7 +17673,7 @@
                     this.handwrittenSignatures = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17087,9 +17793,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DotnetSettings.decode = function decode(reader, length, error) {
+                DotnetSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17097,7 +17807,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 2: {
@@ -17116,10 +17826,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
                                 message.renamedServices[key] = value;
                                 break;
                             }
@@ -17139,10 +17851,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedResources, key);
                                 message.renamedResources[key] = value;
                                 break;
                             }
@@ -17165,7 +17879,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17196,11 +17910,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DotnetSettings.verify = function verify(message) {
+                DotnetSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -17252,28 +17970,38 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.DotnetSettings} DotnetSettings
                  */
-                DotnetSettings.fromObject = function fromObject(object) {
+                DotnetSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.DotnetSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.DotnetSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.DotnetSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     if (object.renamedServices) {
                         if (typeof object.renamedServices !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedServices: object expected");
                         message.renamedServices = {};
-                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
                             message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     if (object.renamedResources) {
                         if (typeof object.renamedResources !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedResources: object expected");
                         message.renamedResources = {};
-                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedResources, keys[i]);
                             message.renamedResources[keys[i]] = String(object.renamedResources[keys[i]]);
+                        }
                     }
                     if (object.ignoredResources) {
                         if (!Array.isArray(object.ignoredResources))
@@ -17328,13 +18056,19 @@
                     var keys2;
                     if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
                         object.renamedServices = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
                             object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
                     }
                     if (message.renamedResources && (keys2 = Object.keys(message.renamedResources)).length) {
                         object.renamedResources = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedResources, keys2[j]);
                             object.renamedResources[keys2[j]] = message.renamedResources[keys2[j]];
+                        }
                     }
                     if (message.ignoredResources && message.ignoredResources.length) {
                         object.ignoredResources = [];
@@ -17403,7 +18137,7 @@
                 function RubySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17468,9 +18202,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                RubySettings.decode = function decode(reader, length, error) {
+                RubySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RubySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17478,11 +18216,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17513,11 +18251,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                RubySettings.verify = function verify(message) {
+                RubySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -17532,14 +18274,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.RubySettings} RubySettings
                  */
-                RubySettings.fromObject = function fromObject(object) {
+                RubySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.RubySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.RubySettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.RubySettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -17615,7 +18361,7 @@
                     this.renamedServices = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17691,9 +18437,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GoSettings.decode = function decode(reader, length, error) {
+                GoSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17701,7 +18451,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 2: {
@@ -17720,15 +18470,17 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
                                 message.renamedServices[key] = value;
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17759,11 +18511,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GoSettings.verify = function verify(message) {
+                GoSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -17786,21 +18542,28 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.GoSettings} GoSettings
                  */
-                GoSettings.fromObject = function fromObject(object) {
+                GoSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.GoSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.GoSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.GoSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     if (object.renamedServices) {
                         if (typeof object.renamedServices !== "object")
                             throw TypeError(".google.api.GoSettings.renamedServices: object expected");
                         message.renamedServices = {};
-                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
                             message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     return message;
                 };
@@ -17827,8 +18590,11 @@
                     var keys2;
                     if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
                         object.renamedServices = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
                             object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
                     }
                     return object;
                 };
@@ -17885,7 +18651,7 @@
                     this.autoPopulatedFields = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17971,9 +18737,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodSettings.decode = function decode(reader, length, error) {
+                MethodSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17985,7 +18755,7 @@
                                 break;
                             }
                         case 2: {
-                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32());
+                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -17995,7 +18765,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -18026,14 +18796,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodSettings.verify = function verify(message) {
+                MethodSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
                             return "selector: string expected";
                     if (message.longRunning != null && message.hasOwnProperty("longRunning")) {
-                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning);
+                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning, long + 1);
                         if (error)
                             return "longRunning." + error;
                     }
@@ -18055,16 +18829,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.MethodSettings} MethodSettings
                  */
-                MethodSettings.fromObject = function fromObject(object) {
+                MethodSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.MethodSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.MethodSettings();
                     if (object.selector != null)
                         message.selector = String(object.selector);
                     if (object.longRunning != null) {
                         if (typeof object.longRunning !== "object")
                             throw TypeError(".google.api.MethodSettings.longRunning: object expected");
-                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning);
+                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning, long + 1);
                     }
                     if (object.autoPopulatedFields) {
                         if (!Array.isArray(object.autoPopulatedFields))
@@ -18156,7 +18934,7 @@
                     function LongRunning(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -18251,9 +19029,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    LongRunning.decode = function decode(reader, length, error) {
+                    LongRunning.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings.LongRunning();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -18261,7 +19043,7 @@
                                 break;
                             switch (tag >>> 3) {
                             case 1: {
-                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 2: {
@@ -18269,15 +19051,15 @@
                                     break;
                                 }
                             case 3: {
-                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 4: {
-                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -18308,11 +19090,15 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    LongRunning.verify = function verify(message) {
+                    LongRunning.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay, long + 1);
                             if (error)
                                 return "initialPollDelay." + error;
                         }
@@ -18320,12 +19106,12 @@
                             if (typeof message.pollDelayMultiplier !== "number")
                                 return "pollDelayMultiplier: number expected";
                         if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay, long + 1);
                             if (error)
                                 return "maxPollDelay." + error;
                         }
                         if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) {
-                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout);
+                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout, long + 1);
                             if (error)
                                 return "totalPollTimeout." + error;
                         }
@@ -18340,26 +19126,30 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.api.MethodSettings.LongRunning} LongRunning
                      */
-                    LongRunning.fromObject = function fromObject(object) {
+                    LongRunning.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.api.MethodSettings.LongRunning)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.api.MethodSettings.LongRunning();
                         if (object.initialPollDelay != null) {
                             if (typeof object.initialPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.initialPollDelay: object expected");
-                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay);
+                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay, long + 1);
                         }
                         if (object.pollDelayMultiplier != null)
                             message.pollDelayMultiplier = Number(object.pollDelayMultiplier);
                         if (object.maxPollDelay != null) {
                             if (typeof object.maxPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.maxPollDelay: object expected");
-                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay);
+                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay, long + 1);
                         }
                         if (object.totalPollTimeout != null) {
                             if (typeof object.totalPollTimeout !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.totalPollTimeout: object expected");
-                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout);
+                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout, long + 1);
                         }
                         return message;
                     };
@@ -18490,7 +19280,7 @@
                     this.methods = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -18566,9 +19356,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                SelectiveGapicGeneration.decode = function decode(reader, length, error) {
+                SelectiveGapicGeneration.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.SelectiveGapicGeneration();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -18586,7 +19380,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -18617,9 +19411,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                SelectiveGapicGeneration.verify = function verify(message) {
+                SelectiveGapicGeneration.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.methods != null && message.hasOwnProperty("methods")) {
                         if (!Array.isArray(message.methods))
                             return "methods: array expected";
@@ -18641,9 +19439,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
                  */
-                SelectiveGapicGeneration.fromObject = function fromObject(object) {
+                SelectiveGapicGeneration.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.SelectiveGapicGeneration)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.SelectiveGapicGeneration();
                     if (object.methods) {
                         if (!Array.isArray(object.methods))
@@ -18795,7 +19597,7 @@
                     this.style = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -18925,9 +19727,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceDescriptor.decode = function decode(reader, length, error) {
+                ResourceDescriptor.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceDescriptor();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -18972,7 +19778,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19003,9 +19809,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceDescriptor.verify = function verify(message) {
+                ResourceDescriptor.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -19057,9 +19867,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceDescriptor} ResourceDescriptor
                  */
-                ResourceDescriptor.fromObject = function fromObject(object) {
+                ResourceDescriptor.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceDescriptor)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceDescriptor();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -19247,7 +20061,7 @@
                 function ResourceReference(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -19322,9 +20136,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceReference.decode = function decode(reader, length, error) {
+                ResourceReference.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceReference();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -19340,7 +20158,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19371,9 +20189,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceReference.verify = function verify(message) {
+                ResourceReference.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -19391,9 +20213,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceReference} ResourceReference
                  */
-                ResourceReference.fromObject = function fromObject(object) {
+                ResourceReference.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceReference)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceReference();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -19488,7 +20314,7 @@
                     this.file = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -19554,9 +20380,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorSet.decode = function decode(reader, length, error) {
+                FileDescriptorSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -19566,11 +20396,11 @@
                         case 1: {
                                 if (!(message.file && message.file.length))
                                     message.file = [];
-                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32()));
+                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19601,14 +20431,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorSet.verify = function verify(message) {
+                FileDescriptorSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.file != null && message.hasOwnProperty("file")) {
                         if (!Array.isArray(message.file))
                             return "file: array expected";
                         for (var i = 0; i < message.file.length; ++i) {
-                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]);
+                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i], long + 1);
                             if (error)
                                 return "file." + error;
                         }
@@ -19624,9 +20458,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet
                  */
-                FileDescriptorSet.fromObject = function fromObject(object) {
+                FileDescriptorSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorSet();
                     if (object.file) {
                         if (!Array.isArray(object.file))
@@ -19635,7 +20473,7 @@
                         for (var i = 0; i < object.file.length; ++i) {
                             if (typeof object.file[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected");
-                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]);
+                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i], long + 1);
                         }
                     }
                     return message;
@@ -19768,7 +20606,7 @@
                     this.extension = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -19971,9 +20809,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorProto.decode = function decode(reader, length, error) {
+                FileDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -20025,33 +20867,33 @@
                         case 4: {
                                 if (!(message.messageType && message.messageType.length))
                                     message.messageType = [];
-                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.service && message.service.length))
                                     message.service = [];
-                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32()));
+                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
-                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32());
+                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 12: {
@@ -20063,7 +20905,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -20094,9 +20936,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorProto.verify = function verify(message) {
+                FileDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -20135,7 +20981,7 @@
                         if (!Array.isArray(message.messageType))
                             return "messageType: array expected";
                         for (var i = 0; i < message.messageType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i], long + 1);
                             if (error)
                                 return "messageType." + error;
                         }
@@ -20144,7 +20990,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -20153,7 +20999,7 @@
                         if (!Array.isArray(message.service))
                             return "service: array expected";
                         for (var i = 0; i < message.service.length; ++i) {
-                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]);
+                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i], long + 1);
                             if (error)
                                 return "service." + error;
                         }
@@ -20162,18 +21008,18 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FileOptions.verify(message.options);
+                        var error = $root.google.protobuf.FileOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
                     if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) {
-                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo);
+                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo, long + 1);
                         if (error)
                             return "sourceCodeInfo." + error;
                     }
@@ -20209,9 +21055,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto
                  */
-                FileDescriptorProto.fromObject = function fromObject(object) {
+                FileDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -20252,7 +21102,7 @@
                         for (var i = 0; i < object.messageType.length; ++i) {
                             if (typeof object.messageType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected");
-                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]);
+                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -20262,7 +21112,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.service) {
@@ -20272,7 +21122,7 @@
                         for (var i = 0; i < object.service.length; ++i) {
                             if (typeof object.service[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected");
-                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]);
+                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -20282,18 +21132,18 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options, long + 1);
                     }
                     if (object.sourceCodeInfo != null) {
                         if (typeof object.sourceCodeInfo !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected");
-                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo);
+                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo, long + 1);
                     }
                     if (object.syntax != null)
                         message.syntax = String(object.syntax);
@@ -20509,7 +21359,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -20682,9 +21532,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DescriptorProto.decode = function decode(reader, length, error) {
+                DescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -20698,47 +21552,47 @@
                         case 2: {
                                 if (!(message.field && message.field.length))
                                     message.field = [];
-                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
                                 if (!(message.nestedType && message.nestedType.length))
                                     message.nestedType = [];
-                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.extensionRange && message.extensionRange.length))
                                     message.extensionRange = [];
-                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32()));
+                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
                                 if (!(message.oneofDecl && message.oneofDecl.length))
                                     message.oneofDecl = [];
-                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32()));
+                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
-                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 10: {
@@ -20752,7 +21606,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -20783,9 +21637,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DescriptorProto.verify = function verify(message) {
+                DescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -20793,7 +21651,7 @@
                         if (!Array.isArray(message.field))
                             return "field: array expected";
                         for (var i = 0; i < message.field.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i], long + 1);
                             if (error)
                                 return "field." + error;
                         }
@@ -20802,7 +21660,7 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
@@ -20811,7 +21669,7 @@
                         if (!Array.isArray(message.nestedType))
                             return "nestedType: array expected";
                         for (var i = 0; i < message.nestedType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i], long + 1);
                             if (error)
                                 return "nestedType." + error;
                         }
@@ -20820,7 +21678,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -20829,7 +21687,7 @@
                         if (!Array.isArray(message.extensionRange))
                             return "extensionRange: array expected";
                         for (var i = 0; i < message.extensionRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i], long + 1);
                             if (error)
                                 return "extensionRange." + error;
                         }
@@ -20838,13 +21696,13 @@
                         if (!Array.isArray(message.oneofDecl))
                             return "oneofDecl: array expected";
                         for (var i = 0; i < message.oneofDecl.length; ++i) {
-                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]);
+                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i], long + 1);
                             if (error)
                                 return "oneofDecl." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MessageOptions.verify(message.options);
+                        var error = $root.google.protobuf.MessageOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -20852,7 +21710,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -20884,9 +21742,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.DescriptorProto} DescriptorProto
                  */
-                DescriptorProto.fromObject = function fromObject(object) {
+                DescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.DescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.DescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -20897,7 +21759,7 @@
                         for (var i = 0; i < object.field.length; ++i) {
                             if (typeof object.field[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.field: object expected");
-                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]);
+                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -20907,7 +21769,7 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.nestedType) {
@@ -20917,7 +21779,7 @@
                         for (var i = 0; i < object.nestedType.length; ++i) {
                             if (typeof object.nestedType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected");
-                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]);
+                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -20927,7 +21789,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.extensionRange) {
@@ -20937,7 +21799,7 @@
                         for (var i = 0; i < object.extensionRange.length; ++i) {
                             if (typeof object.extensionRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected");
-                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]);
+                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i], long + 1);
                         }
                     }
                     if (object.oneofDecl) {
@@ -20947,13 +21809,13 @@
                         for (var i = 0; i < object.oneofDecl.length; ++i) {
                             if (typeof object.oneofDecl[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected");
-                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]);
+                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.DescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -20962,7 +21824,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -21120,7 +21982,7 @@
                     function ExtensionRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -21205,9 +22067,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ExtensionRange.decode = function decode(reader, length, error) {
+                    ExtensionRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -21223,11 +22089,11 @@
                                     break;
                                 }
                             case 3: {
-                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32());
+                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -21258,9 +22124,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ExtensionRange.verify = function verify(message) {
+                    ExtensionRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -21268,7 +22138,7 @@
                             if (!$util.isInteger(message.end))
                                 return "end: integer expected";
                         if (message.options != null && message.hasOwnProperty("options")) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options, long + 1);
                             if (error)
                                 return "options." + error;
                         }
@@ -21283,9 +22153,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange
                      */
-                    ExtensionRange.fromObject = function fromObject(object) {
+                    ExtensionRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -21294,7 +22168,7 @@
                         if (object.options != null) {
                             if (typeof object.options !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected");
-                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options);
+                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options, long + 1);
                         }
                         return message;
                     };
@@ -21376,7 +22250,7 @@
                     function ReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -21451,9 +22325,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ReservedRange.decode = function decode(reader, length, error) {
+                    ReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -21469,7 +22347,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -21500,9 +22378,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ReservedRange.verify = function verify(message) {
+                    ReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -21520,9 +22402,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange
                      */
-                    ReservedRange.fromObject = function fromObject(object) {
+                    ReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -21612,7 +22498,7 @@
                     this.declaration = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -21709,9 +22595,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ExtensionRangeOptions.decode = function decode(reader, length, error) {
+                ExtensionRangeOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -21721,17 +22611,17 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
                                 if (!(message.declaration && message.declaration.length))
                                     message.declaration = [];
-                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32()));
+                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -21739,7 +22629,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -21770,14 +22660,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ExtensionRangeOptions.verify = function verify(message) {
+                ExtensionRangeOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -21786,13 +22680,13 @@
                         if (!Array.isArray(message.declaration))
                             return "declaration: array expected";
                         for (var i = 0; i < message.declaration.length; ++i) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i]);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i], long + 1);
                             if (error)
                                 return "declaration." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -21815,9 +22709,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions
                  */
-                ExtensionRangeOptions.fromObject = function fromObject(object) {
+                ExtensionRangeOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ExtensionRangeOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ExtensionRangeOptions();
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -21826,7 +22724,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object.declaration) {
@@ -21836,13 +22734,13 @@
                         for (var i = 0; i < object.declaration.length; ++i) {
                             if (typeof object.declaration[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: object expected");
-                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i]);
+                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ExtensionRangeOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     switch (object.verification) {
                     case "DECLARATION":
@@ -21951,7 +22849,7 @@
                     function Declaration(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -22056,9 +22954,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Declaration.decode = function decode(reader, length, error) {
+                    Declaration.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -22086,7 +22988,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -22117,9 +23019,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Declaration.verify = function verify(message) {
+                    Declaration.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.number != null && message.hasOwnProperty("number"))
                             if (!$util.isInteger(message.number))
                                 return "number: integer expected";
@@ -22146,9 +23052,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration
                      */
-                    Declaration.fromObject = function fromObject(object) {
+                    Declaration.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.ExtensionRangeOptions.Declaration)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         if (object.number != null)
                             message.number = object.number | 0;
@@ -22272,7 +23182,7 @@
                 function FieldDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -22437,9 +23347,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldDescriptorProto.decode = function decode(reader, length, error) {
+                FieldDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -22483,7 +23397,7 @@
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 17: {
@@ -22491,7 +23405,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -22522,9 +23436,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldDescriptorProto.verify = function verify(message) {
+                FieldDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -22580,7 +23498,7 @@
                         if (!$util.isString(message.jsonName))
                             return "jsonName: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FieldOptions.verify(message.options);
+                        var error = $root.google.protobuf.FieldOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -22598,9 +23516,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto
                  */
-                FieldDescriptorProto.fromObject = function fromObject(object) {
+                FieldDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -22719,7 +23641,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options, long + 1);
                     }
                     if (object.proto3Optional != null)
                         message.proto3Optional = Boolean(object.proto3Optional);
@@ -22889,7 +23811,7 @@
                 function OneofDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -22964,9 +23886,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofDescriptorProto.decode = function decode(reader, length, error) {
+                OneofDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -22978,11 +23904,11 @@
                                 break;
                             }
                         case 2: {
-                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23013,14 +23939,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofDescriptorProto.verify = function verify(message) {
+                OneofDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.OneofOptions.verify(message.options);
+                        var error = $root.google.protobuf.OneofOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -23035,16 +23965,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto
                  */
-                OneofDescriptorProto.fromObject = function fromObject(object) {
+                OneofDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -23130,7 +24064,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23248,9 +24182,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumDescriptorProto.decode = function decode(reader, length, error) {
+                EnumDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23264,17 +24202,17 @@
                         case 2: {
                                 if (!(message.value && message.value.length))
                                     message.value = [];
-                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32()));
+                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 4: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
@@ -23288,7 +24226,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23319,9 +24257,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumDescriptorProto.verify = function verify(message) {
+                EnumDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -23329,13 +24271,13 @@
                         if (!Array.isArray(message.value))
                             return "value: array expected";
                         for (var i = 0; i < message.value.length; ++i) {
-                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]);
+                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i], long + 1);
                             if (error)
                                 return "value." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -23343,7 +24285,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -23375,9 +24317,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto
                  */
-                EnumDescriptorProto.fromObject = function fromObject(object) {
+                EnumDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -23388,13 +24334,13 @@
                         for (var i = 0; i < object.value.length; ++i) {
                             if (typeof object.value[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected");
-                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]);
+                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -23403,7 +24349,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -23530,7 +24476,7 @@
                     function EnumReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -23605,9 +24551,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EnumReservedRange.decode = function decode(reader, length, error) {
+                    EnumReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -23623,7 +24573,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -23654,9 +24604,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EnumReservedRange.verify = function verify(message) {
+                    EnumReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -23674,9 +24628,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange
                      */
-                    EnumReservedRange.fromObject = function fromObject(object) {
+                    EnumReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -23763,7 +24721,7 @@
                 function EnumValueDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23848,9 +24806,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueDescriptorProto.decode = function decode(reader, length, error) {
+                EnumValueDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23866,11 +24828,11 @@
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23901,9 +24863,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueDescriptorProto.verify = function verify(message) {
+                EnumValueDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -23911,7 +24877,7 @@
                         if (!$util.isInteger(message.number))
                             return "number: integer expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -23926,9 +24892,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto
                  */
-                EnumValueDescriptorProto.fromObject = function fromObject(object) {
+                EnumValueDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -23937,7 +24907,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -24021,7 +24991,7 @@
                     this.method = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -24107,9 +25077,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceDescriptorProto.decode = function decode(reader, length, error) {
+                ServiceDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -24123,15 +25097,15 @@
                         case 2: {
                                 if (!(message.method && message.method.length))
                                     message.method = [];
-                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32()));
+                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -24162,9 +25136,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceDescriptorProto.verify = function verify(message) {
+                ServiceDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -24172,13 +25150,13 @@
                         if (!Array.isArray(message.method))
                             return "method: array expected";
                         for (var i = 0; i < message.method.length; ++i) {
-                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]);
+                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i], long + 1);
                             if (error)
                                 return "method." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.ServiceOptions.verify(message.options);
+                        var error = $root.google.protobuf.ServiceOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -24193,9 +25171,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto
                  */
-                ServiceDescriptorProto.fromObject = function fromObject(object) {
+                ServiceDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -24206,13 +25188,13 @@
                         for (var i = 0; i < object.method.length; ++i) {
                             if (typeof object.method[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected");
-                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]);
+                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -24302,7 +25284,7 @@
                 function MethodDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -24417,9 +25399,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodDescriptorProto.decode = function decode(reader, length, error) {
+                MethodDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -24439,7 +25425,7 @@
                                 break;
                             }
                         case 4: {
-                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 5: {
@@ -24451,7 +25437,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -24482,9 +25468,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodDescriptorProto.verify = function verify(message) {
+                MethodDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -24495,7 +25485,7 @@
                         if (!$util.isString(message.outputType))
                             return "outputType: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MethodOptions.verify(message.options);
+                        var error = $root.google.protobuf.MethodOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -24516,9 +25506,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto
                  */
-                MethodDescriptorProto.fromObject = function fromObject(object) {
+                MethodDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -24529,7 +25523,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options, long + 1);
                     }
                     if (object.clientStreaming != null)
                         message.clientStreaming = Boolean(object.clientStreaming);
@@ -24646,7 +25640,7 @@
                     this[".google.api.resourceDefinition"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -24923,9 +25917,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileOptions.decode = function decode(reader, length, error) {
+                FileOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -25009,23 +26007,23 @@
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
                                 if (!(message[".google.api.resourceDefinition"] && message[".google.api.resourceDefinition"].length))
                                     message[".google.api.resourceDefinition"] = [];
-                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32()));
+                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -25056,9 +26054,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileOptions.verify = function verify(message) {
+                FileOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.javaPackage != null && message.hasOwnProperty("javaPackage"))
                         if (!$util.isString(message.javaPackage))
                             return "javaPackage: string expected";
@@ -25123,7 +26125,7 @@
                         if (!$util.isString(message.rubyPackage))
                             return "rubyPackage: string expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -25131,7 +26133,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -25140,7 +26142,7 @@
                         if (!Array.isArray(message[".google.api.resourceDefinition"]))
                             return ".google.api.resourceDefinition: array expected";
                         for (var i = 0; i < message[".google.api.resourceDefinition"].length; ++i) {
-                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i]);
+                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i], long + 1);
                             if (error)
                                 return ".google.api.resourceDefinition." + error;
                         }
@@ -25156,9 +26158,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileOptions} FileOptions
                  */
-                FileOptions.fromObject = function fromObject(object) {
+                FileOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileOptions();
                     if (object.javaPackage != null)
                         message.javaPackage = String(object.javaPackage);
@@ -25219,7 +26225,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FileOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -25228,7 +26234,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resourceDefinition"]) {
@@ -25238,7 +26244,7 @@
                         for (var i = 0; i < object[".google.api.resourceDefinition"].length; ++i) {
                             if (typeof object[".google.api.resourceDefinition"][i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions..google.api.resourceDefinition: object expected");
-                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i]);
+                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i], long + 1);
                         }
                     }
                     return message;
@@ -25409,7 +26415,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -25545,9 +26551,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MessageOptions.decode = function decode(reader, length, error) {
+                MessageOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -25575,21 +26585,21 @@
                                 break;
                             }
                         case 12: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
-                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32());
+                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -25620,9 +26630,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MessageOptions.verify = function verify(message) {
+                MessageOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat"))
                         if (typeof message.messageSetWireFormat !== "boolean")
                             return "messageSetWireFormat: boolean expected";
@@ -25639,7 +26653,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -25647,13 +26661,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.resource"] != null && message.hasOwnProperty(".google.api.resource")) {
-                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"]);
+                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"], long + 1);
                         if (error)
                             return ".google.api.resource." + error;
                     }
@@ -25668,9 +26682,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MessageOptions} MessageOptions
                  */
-                MessageOptions.fromObject = function fromObject(object) {
+                MessageOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MessageOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MessageOptions();
                     if (object.messageSetWireFormat != null)
                         message.messageSetWireFormat = Boolean(object.messageSetWireFormat);
@@ -25685,7 +26703,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MessageOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -25694,13 +26712,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resource"] != null) {
                         if (typeof object[".google.api.resource"] !== "object")
                             throw TypeError(".google.protobuf.MessageOptions..google.api.resource: object expected");
-                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"]);
+                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"], long + 1);
                     }
                     return message;
                 };
@@ -25819,7 +26837,7 @@
                     this[".google.api.fieldBehavior"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -26038,9 +27056,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldOptions.decode = function decode(reader, length, error) {
+                FieldOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -26097,21 +27119,21 @@
                         case 20: {
                                 if (!(message.editionDefaults && message.editionDefaults.length))
                                     message.editionDefaults = [];
-                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32()));
+                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 21: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 22: {
-                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32());
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1052: {
@@ -26126,11 +27148,11 @@
                                 break;
                             }
                         case 1055: {
-                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32());
+                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -26161,9 +27183,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldOptions.verify = function verify(message) {
+                FieldOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
                         switch (message.ctype) {
                         default:
@@ -26233,18 +27259,18 @@
                         if (!Array.isArray(message.editionDefaults))
                             return "editionDefaults: array expected";
                         for (var i = 0; i < message.editionDefaults.length; ++i) {
-                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i]);
+                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i], long + 1);
                             if (error)
                                 return "editionDefaults." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
                     if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
-                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport);
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
                         if (error)
                             return "featureSupport." + error;
                     }
@@ -26252,7 +27278,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -26277,7 +27303,7 @@
                             }
                     }
                     if (message[".google.api.resourceReference"] != null && message.hasOwnProperty(".google.api.resourceReference")) {
-                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"]);
+                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"], long + 1);
                         if (error)
                             return ".google.api.resourceReference." + error;
                     }
@@ -26292,9 +27318,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldOptions} FieldOptions
                  */
-                FieldOptions.fromObject = function fromObject(object) {
+                FieldOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldOptions();
                     switch (object.ctype) {
                     default:
@@ -26428,18 +27458,18 @@
                         for (var i = 0; i < object.editionDefaults.length; ++i) {
                             if (typeof object.editionDefaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.editionDefaults: object expected");
-                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i]);
+                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FieldOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.featureSupport != null) {
                         if (typeof object.featureSupport !== "object")
                             throw TypeError(".google.protobuf.FieldOptions.featureSupport: object expected");
-                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport);
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -26448,7 +27478,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.fieldBehavior"]) {
@@ -26503,7 +27533,7 @@
                     if (object[".google.api.resourceReference"] != null) {
                         if (typeof object[".google.api.resourceReference"] !== "object")
                             throw TypeError(".google.protobuf.FieldOptions..google.api.resourceReference: object expected");
-                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"]);
+                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"], long + 1);
                     }
                     return message;
                 };
@@ -26713,7 +27743,7 @@
                     function EditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -26788,9 +27818,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EditionDefault.decode = function decode(reader, length, error) {
+                    EditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -26806,7 +27840,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -26837,9 +27871,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EditionDefault.verify = function verify(message) {
+                    EditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
@@ -26872,9 +27910,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault
                      */
-                    EditionDefault.fromObject = function fromObject(object) {
+                    EditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         switch (object.edition) {
                         default:
@@ -27013,7 +28055,7 @@
                     function FeatureSupport(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -27108,9 +28150,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    FeatureSupport.decode = function decode(reader, length, error) {
+                    FeatureSupport.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.FeatureSupport();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -27134,7 +28180,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -27165,9 +28211,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    FeatureSupport.verify = function verify(message) {
+                    FeatureSupport.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
                             switch (message.editionIntroduced) {
                             default:
@@ -27236,9 +28286,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
                      */
-                    FeatureSupport.fromObject = function fromObject(object) {
+                    FeatureSupport.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FieldOptions.FeatureSupport)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FieldOptions.FeatureSupport();
                         switch (object.editionIntroduced) {
                         default:
@@ -27497,7 +28551,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -27573,9 +28627,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofOptions.decode = function decode(reader, length, error) {
+                OneofOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -27583,17 +28641,17 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -27624,11 +28682,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofOptions.verify = function verify(message) {
+                OneofOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -27636,7 +28698,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -27652,14 +28714,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofOptions} OneofOptions
                  */
-                OneofOptions.fromObject = function fromObject(object) {
+                OneofOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.OneofOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -27668,7 +28734,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -27755,7 +28821,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -27861,9 +28927,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumOptions.decode = function decode(reader, length, error) {
+                EnumOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -27883,17 +28953,17 @@
                                 break;
                             }
                         case 7: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -27924,9 +28994,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumOptions.verify = function verify(message) {
+                EnumOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.allowAlias != null && message.hasOwnProperty("allowAlias"))
                         if (typeof message.allowAlias !== "boolean")
                             return "allowAlias: boolean expected";
@@ -27937,7 +29011,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -27945,7 +29019,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -27961,9 +29035,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumOptions} EnumOptions
                  */
-                EnumOptions.fromObject = function fromObject(object) {
+                EnumOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumOptions();
                     if (object.allowAlias != null)
                         message.allowAlias = Boolean(object.allowAlias);
@@ -27974,7 +29052,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -27983,7 +29061,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -28080,7 +29158,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -28186,9 +29264,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueOptions.decode = function decode(reader, length, error) {
+                EnumValueOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -28200,7 +29282,7 @@
                                 break;
                             }
                         case 2: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -28208,17 +29290,17 @@
                                 break;
                             }
                         case 4: {
-                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32());
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -28249,14 +29331,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueOptions.verify = function verify(message) {
+                EnumValueOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -28264,7 +29350,7 @@
                         if (typeof message.debugRedact !== "boolean")
                             return "debugRedact: boolean expected";
                     if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
-                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport);
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
                         if (error)
                             return "featureSupport." + error;
                     }
@@ -28272,7 +29358,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -28288,23 +29374,27 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueOptions} EnumValueOptions
                  */
-                EnumValueOptions.fromObject = function fromObject(object) {
+                EnumValueOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumValueOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.debugRedact != null)
                         message.debugRedact = Boolean(object.debugRedact);
                     if (object.featureSupport != null) {
                         if (typeof object.featureSupport !== "object")
                             throw TypeError(".google.protobuf.EnumValueOptions.featureSupport: object expected");
-                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport);
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -28313,7 +29403,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -28411,7 +29501,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -28527,9 +29617,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceOptions.decode = function decode(reader, length, error) {
+                ServiceOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -28537,7 +29631,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 34: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 33: {
@@ -28547,7 +29641,7 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1049: {
@@ -28563,7 +29657,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -28594,11 +29688,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceOptions.verify = function verify(message) {
+                ServiceOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -28609,7 +29707,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -28634,14 +29732,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceOptions} ServiceOptions
                  */
-                ServiceOptions.fromObject = function fromObject(object) {
+                ServiceOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ServiceOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -28652,7 +29754,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.defaultHost"] != null)
@@ -28760,7 +29862,7 @@
                     this[".google.api.methodSignature"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -28877,9 +29979,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodOptions.decode = function decode(reader, length, error) {
+                MethodOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -28895,17 +30001,17 @@
                                 break;
                             }
                         case 35: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 72295728: {
-                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32());
+                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 1051: {
@@ -28915,7 +30021,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -28946,9 +30052,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodOptions.verify = function verify(message) {
+                MethodOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
@@ -28962,7 +30072,7 @@
                             break;
                         }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -28970,13 +30080,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) {
-                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"]);
+                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"], long + 1);
                         if (error)
                             return ".google.api.http." + error;
                     }
@@ -28998,9 +30108,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodOptions} MethodOptions
                  */
-                MethodOptions.fromObject = function fromObject(object) {
+                MethodOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -29027,7 +30141,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MethodOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -29036,13 +30150,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.http"] != null) {
                         if (typeof object[".google.api.http"] !== "object")
                             throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected");
-                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]);
+                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"], long + 1);
                     }
                     if (object[".google.api.methodSignature"]) {
                         if (!Array.isArray(object[".google.api.methodSignature"]))
@@ -29170,7 +30284,7 @@
                     this.name = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -29296,9 +30410,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                UninterpretedOption.decode = function decode(reader, length, error) {
+                UninterpretedOption.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -29308,7 +30426,7 @@
                         case 2: {
                                 if (!(message.name && message.name.length))
                                     message.name = [];
-                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32()));
+                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
@@ -29336,7 +30454,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -29367,14 +30485,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                UninterpretedOption.verify = function verify(message) {
+                UninterpretedOption.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name")) {
                         if (!Array.isArray(message.name))
                             return "name: array expected";
                         for (var i = 0; i < message.name.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i], long + 1);
                             if (error)
                                 return "name." + error;
                         }
@@ -29408,9 +30530,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.UninterpretedOption} UninterpretedOption
                  */
-                UninterpretedOption.fromObject = function fromObject(object) {
+                UninterpretedOption.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.UninterpretedOption)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.UninterpretedOption();
                     if (object.name) {
                         if (!Array.isArray(object.name))
@@ -29419,7 +30545,7 @@
                         for (var i = 0; i < object.name.length; ++i) {
                             if (typeof object.name[i] !== "object")
                                 throw TypeError(".google.protobuf.UninterpretedOption.name: object expected");
-                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]);
+                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i], long + 1);
                         }
                     }
                     if (object.identifierValue != null)
@@ -29564,7 +30690,7 @@
                     function NamePart(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -29637,9 +30763,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    NamePart.decode = function decode(reader, length, error) {
+                    NamePart.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -29655,7 +30785,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -29690,9 +30820,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    NamePart.verify = function verify(message) {
+                    NamePart.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (!$util.isString(message.namePart))
                             return "namePart: string expected";
                         if (typeof message.isExtension !== "boolean")
@@ -29708,9 +30842,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
                      */
-                    NamePart.fromObject = function fromObject(object) {
+                    NamePart.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         if (object.namePart != null)
                             message.namePart = String(object.namePart);
@@ -29802,7 +30940,7 @@
                 function FeatureSet(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -29937,9 +31075,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSet.decode = function decode(reader, length, error) {
+                FeatureSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -29979,7 +31121,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -30010,9 +31152,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSet.verify = function verify(message) {
+                FeatureSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
                         switch (message.fieldPresence) {
                         default:
@@ -30099,9 +31245,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSet} FeatureSet
                  */
-                FeatureSet.fromObject = function fromObject(object) {
+                FeatureSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSet();
                     switch (object.fieldPresence) {
                     default:
@@ -30479,7 +31629,7 @@
                     function VisibilityFeature(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -30534,9 +31684,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    VisibilityFeature.decode = function decode(reader, length, error) {
+                    VisibilityFeature.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet.VisibilityFeature();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -30544,7 +31698,7 @@
                                 break;
                             switch (tag >>> 3) {
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -30575,9 +31729,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    VisibilityFeature.verify = function verify(message) {
+                    VisibilityFeature.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         return null;
                     };
     
@@ -30589,9 +31747,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
                      */
-                    VisibilityFeature.fromObject = function fromObject(object) {
+                    VisibilityFeature.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FeatureSet.VisibilityFeature)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         return new $root.google.protobuf.FeatureSet.VisibilityFeature();
                     };
     
@@ -30683,7 +31845,7 @@
                     this.defaults = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -30769,9 +31931,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSetDefaults.decode = function decode(reader, length, error) {
+                FeatureSetDefaults.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -30781,7 +31947,7 @@
                         case 1: {
                                 if (!(message.defaults && message.defaults.length))
                                     message.defaults = [];
-                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32()));
+                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
@@ -30793,7 +31959,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -30824,14 +31990,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSetDefaults.verify = function verify(message) {
+                FeatureSetDefaults.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.defaults != null && message.hasOwnProperty("defaults")) {
                         if (!Array.isArray(message.defaults))
                             return "defaults: array expected";
                         for (var i = 0; i < message.defaults.length; ++i) {
-                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i]);
+                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i], long + 1);
                             if (error)
                                 return "defaults." + error;
                         }
@@ -30883,9 +32053,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults
                  */
-                FeatureSetDefaults.fromObject = function fromObject(object) {
+                FeatureSetDefaults.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSetDefaults)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSetDefaults();
                     if (object.defaults) {
                         if (!Array.isArray(object.defaults))
@@ -30894,7 +32068,7 @@
                         for (var i = 0; i < object.defaults.length; ++i) {
                             if (typeof object.defaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: object expected");
-                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i]);
+                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i], long + 1);
                         }
                     }
                     switch (object.minimumEdition) {
@@ -31091,7 +32265,7 @@
                     function FeatureSetEditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -31176,9 +32350,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    FeatureSetEditionDefault.decode = function decode(reader, length, error) {
+                    FeatureSetEditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -31190,15 +32368,15 @@
                                     break;
                                 }
                             case 4: {
-                                    message.overridableFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                    message.overridableFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 5: {
-                                    message.fixedFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                    message.fixedFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -31229,9 +32407,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    FeatureSetEditionDefault.verify = function verify(message) {
+                    FeatureSetEditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
@@ -31251,12 +32433,12 @@
                                 break;
                             }
                         if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) {
-                            var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures);
+                            var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures, long + 1);
                             if (error)
                                 return "overridableFeatures." + error;
                         }
                         if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) {
-                            var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures);
+                            var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures, long + 1);
                             if (error)
                                 return "fixedFeatures." + error;
                         }
@@ -31271,9 +32453,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault
                      */
-                    FeatureSetEditionDefault.fromObject = function fromObject(object) {
+                    FeatureSetEditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         switch (object.edition) {
                         default:
@@ -31334,12 +32520,12 @@
                         if (object.overridableFeatures != null) {
                             if (typeof object.overridableFeatures !== "object")
                                 throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridableFeatures: object expected");
-                            message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures);
+                            message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures, long + 1);
                         }
                         if (object.fixedFeatures != null) {
                             if (typeof object.fixedFeatures !== "object")
                                 throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixedFeatures: object expected");
-                            message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures);
+                            message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures, long + 1);
                         }
                         return message;
                     };
@@ -31424,7 +32610,7 @@
                     this.location = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -31490,9 +32676,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                SourceCodeInfo.decode = function decode(reader, length, error) {
+                SourceCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -31502,11 +32692,11 @@
                         case 1: {
                                 if (!(message.location && message.location.length))
                                     message.location = [];
-                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32()));
+                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -31537,14 +32727,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                SourceCodeInfo.verify = function verify(message) {
+                SourceCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.location != null && message.hasOwnProperty("location")) {
                         if (!Array.isArray(message.location))
                             return "location: array expected";
                         for (var i = 0; i < message.location.length; ++i) {
-                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]);
+                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i], long + 1);
                             if (error)
                                 return "location." + error;
                         }
@@ -31560,9 +32754,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo
                  */
-                SourceCodeInfo.fromObject = function fromObject(object) {
+                SourceCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.SourceCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.SourceCodeInfo();
                     if (object.location) {
                         if (!Array.isArray(object.location))
@@ -31571,7 +32769,7 @@
                         for (var i = 0; i < object.location.length; ++i) {
                             if (typeof object.location[i] !== "object")
                                 throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected");
-                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]);
+                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i], long + 1);
                         }
                     }
                     return message;
@@ -31653,7 +32851,7 @@
                         this.leadingDetachedComments = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -31767,9 +32965,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Location.decode = function decode(reader, length, error) {
+                    Location.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -31813,7 +33015,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -31844,9 +33046,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Location.verify = function verify(message) {
+                    Location.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -31885,9 +33091,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.SourceCodeInfo.Location} Location
                      */
-                    Location.fromObject = function fromObject(object) {
+                    Location.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.SourceCodeInfo.Location)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.SourceCodeInfo.Location();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -32014,7 +33224,7 @@
                     this.annotation = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -32080,9 +33290,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GeneratedCodeInfo.decode = function decode(reader, length, error) {
+                GeneratedCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -32092,11 +33306,11 @@
                         case 1: {
                                 if (!(message.annotation && message.annotation.length))
                                     message.annotation = [];
-                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32()));
+                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -32127,14 +33341,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GeneratedCodeInfo.verify = function verify(message) {
+                GeneratedCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.annotation != null && message.hasOwnProperty("annotation")) {
                         if (!Array.isArray(message.annotation))
                             return "annotation: array expected";
                         for (var i = 0; i < message.annotation.length; ++i) {
-                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]);
+                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i], long + 1);
                             if (error)
                                 return "annotation." + error;
                         }
@@ -32150,9 +33368,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo
                  */
-                GeneratedCodeInfo.fromObject = function fromObject(object) {
+                GeneratedCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.GeneratedCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.GeneratedCodeInfo();
                     if (object.annotation) {
                         if (!Array.isArray(object.annotation))
@@ -32161,7 +33383,7 @@
                         for (var i = 0; i < object.annotation.length; ++i) {
                             if (typeof object.annotation[i] !== "object")
                                 throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected");
-                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]);
+                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i], long + 1);
                         }
                     }
                     return message;
@@ -32241,7 +33463,7 @@
                         this.path = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -32350,9 +33572,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Annotation.decode = function decode(reader, length, error) {
+                    Annotation.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -32387,7 +33613,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -32418,9 +33644,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Annotation.verify = function verify(message) {
+                    Annotation.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -32457,9 +33687,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation
                      */
-                    Annotation.fromObject = function fromObject(object) {
+                    Annotation.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -32619,7 +33853,7 @@
                 function Duration(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -32694,9 +33928,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Duration.decode = function decode(reader, length, error) {
+                Duration.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Duration();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -32712,7 +33950,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -32743,9 +33981,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Duration.verify = function verify(message) {
+                Duration.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -32763,9 +34005,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Duration} Duration
                  */
-                Duration.fromObject = function fromObject(object) {
+                Duration.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Duration)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Duration();
                     if (object.seconds != null)
                         if ($util.Long)
@@ -32860,7 +34106,7 @@
                 function Empty(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -32915,9 +34161,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Empty.decode = function decode(reader, length, error) {
+                Empty.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Empty();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -32925,7 +34175,7 @@
                             break;
                         switch (tag >>> 3) {
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -32956,9 +34206,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Empty.verify = function verify(message) {
+                Empty.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     return null;
                 };
     
@@ -32970,9 +34224,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Empty} Empty
                  */
-                Empty.fromObject = function fromObject(object) {
+                Empty.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Empty)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     return new $root.google.protobuf.Empty();
                 };
     
@@ -33039,7 +34297,7 @@
                     this.paths = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -33105,9 +34363,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldMask.decode = function decode(reader, length, error) {
+                FieldMask.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldMask();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -33121,7 +34383,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -33152,9 +34414,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldMask.verify = function verify(message) {
+                FieldMask.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.paths != null && message.hasOwnProperty("paths")) {
                         if (!Array.isArray(message.paths))
                             return "paths: array expected";
@@ -33173,9 +34439,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldMask} FieldMask
                  */
-                FieldMask.fromObject = function fromObject(object) {
+                FieldMask.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldMask)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldMask();
                     if (object.paths) {
                         if (!Array.isArray(object.paths))
@@ -33260,7 +34530,7 @@
                     this.fields = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -33328,9 +34598,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Struct.decode = function decode(reader, length, error) {
+                Struct.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Struct(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -33350,18 +34624,20 @@
                                         key = reader.string();
                                         break;
                                     case 2:
-                                        value = $root.google.protobuf.Value.decode(reader, reader.uint32());
+                                        value = $root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.fields, key);
                                 message.fields[key] = value;
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -33392,15 +34668,19 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Struct.verify = function verify(message) {
+                Struct.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.fields != null && message.hasOwnProperty("fields")) {
                         if (!$util.isObject(message.fields))
                             return "fields: object expected";
                         var key = Object.keys(message.fields);
                         for (var i = 0; i < key.length; ++i) {
-                            var error = $root.google.protobuf.Value.verify(message.fields[key[i]]);
+                            var error = $root.google.protobuf.Value.verify(message.fields[key[i]], long + 1);
                             if (error)
                                 return "fields." + error;
                         }
@@ -33416,18 +34696,24 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Struct} Struct
                  */
-                Struct.fromObject = function fromObject(object) {
+                Struct.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Struct)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Struct();
                     if (object.fields) {
                         if (typeof object.fields !== "object")
                             throw TypeError(".google.protobuf.Struct.fields: object expected");
                         message.fields = {};
                         for (var keys = Object.keys(object.fields), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.fields, keys[i]);
                             if (typeof object.fields[keys[i]] !== "object")
                                 throw TypeError(".google.protobuf.Struct.fields: object expected");
-                            message.fields[keys[i]] = $root.google.protobuf.Value.fromObject(object.fields[keys[i]]);
+                            message.fields[keys[i]] = $root.google.protobuf.Value.fromObject(object.fields[keys[i]], long + 1);
                         }
                     }
                     return message;
@@ -33451,8 +34737,11 @@
                     var keys2;
                     if (message.fields && (keys2 = Object.keys(message.fields)).length) {
                         object.fields = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.fields, keys2[j]);
                             object.fields[keys2[j]] = $root.google.protobuf.Value.toObject(message.fields[keys2[j]], options);
+                        }
                     }
                     return object;
                 };
@@ -33511,7 +34800,7 @@
                 function Value(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -33640,9 +34929,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Value.decode = function decode(reader, length, error) {
+                Value.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Value();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -33666,15 +34959,15 @@
                                 break;
                             }
                         case 5: {
-                                message.structValue = $root.google.protobuf.Struct.decode(reader, reader.uint32());
+                                message.structValue = $root.google.protobuf.Struct.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 6: {
-                                message.listValue = $root.google.protobuf.ListValue.decode(reader, reader.uint32());
+                                message.listValue = $root.google.protobuf.ListValue.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -33705,9 +34998,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Value.verify = function verify(message) {
+                Value.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     var properties = {};
                     if (message.nullValue != null && message.hasOwnProperty("nullValue")) {
                         properties.kind = 1;
@@ -33744,7 +35041,7 @@
                             return "kind: multiple values";
                         properties.kind = 1;
                         {
-                            var error = $root.google.protobuf.Struct.verify(message.structValue);
+                            var error = $root.google.protobuf.Struct.verify(message.structValue, long + 1);
                             if (error)
                                 return "structValue." + error;
                         }
@@ -33754,7 +35051,7 @@
                             return "kind: multiple values";
                         properties.kind = 1;
                         {
-                            var error = $root.google.protobuf.ListValue.verify(message.listValue);
+                            var error = $root.google.protobuf.ListValue.verify(message.listValue, long + 1);
                             if (error)
                                 return "listValue." + error;
                         }
@@ -33770,9 +35067,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Value} Value
                  */
-                Value.fromObject = function fromObject(object) {
+                Value.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Value)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Value();
                     switch (object.nullValue) {
                     default:
@@ -33795,12 +35096,12 @@
                     if (object.structValue != null) {
                         if (typeof object.structValue !== "object")
                             throw TypeError(".google.protobuf.Value.structValue: object expected");
-                        message.structValue = $root.google.protobuf.Struct.fromObject(object.structValue);
+                        message.structValue = $root.google.protobuf.Struct.fromObject(object.structValue, long + 1);
                     }
                     if (object.listValue != null) {
                         if (typeof object.listValue !== "object")
                             throw TypeError(".google.protobuf.Value.listValue: object expected");
-                        message.listValue = $root.google.protobuf.ListValue.fromObject(object.listValue);
+                        message.listValue = $root.google.protobuf.ListValue.fromObject(object.listValue, long + 1);
                     }
                     return message;
                 };
@@ -33913,7 +35214,7 @@
                     this.values = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -33979,9 +35280,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ListValue.decode = function decode(reader, length, error) {
+                ListValue.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ListValue();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -33991,11 +35296,11 @@
                         case 1: {
                                 if (!(message.values && message.values.length))
                                     message.values = [];
-                                message.values.push($root.google.protobuf.Value.decode(reader, reader.uint32()));
+                                message.values.push($root.google.protobuf.Value.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -34026,14 +35331,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ListValue.verify = function verify(message) {
+                ListValue.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.values != null && message.hasOwnProperty("values")) {
                         if (!Array.isArray(message.values))
                             return "values: array expected";
                         for (var i = 0; i < message.values.length; ++i) {
-                            var error = $root.google.protobuf.Value.verify(message.values[i]);
+                            var error = $root.google.protobuf.Value.verify(message.values[i], long + 1);
                             if (error)
                                 return "values." + error;
                         }
@@ -34049,9 +35358,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ListValue} ListValue
                  */
-                ListValue.fromObject = function fromObject(object) {
+                ListValue.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ListValue)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ListValue();
                     if (object.values) {
                         if (!Array.isArray(object.values))
@@ -34060,7 +35373,7 @@
                         for (var i = 0; i < object.values.length; ++i) {
                             if (typeof object.values[i] !== "object")
                                 throw TypeError(".google.protobuf.ListValue.values: object expected");
-                            message.values[i] = $root.google.protobuf.Value.fromObject(object.values[i]);
+                            message.values[i] = $root.google.protobuf.Value.fromObject(object.values[i], long + 1);
                         }
                     }
                     return message;
@@ -34139,7 +35452,7 @@
                 function Timestamp(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -34214,9 +35527,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Timestamp.decode = function decode(reader, length, error) {
+                Timestamp.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -34232,7 +35549,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -34263,9 +35580,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Timestamp.verify = function verify(message) {
+                Timestamp.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -34283,9 +35604,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Timestamp} Timestamp
                  */
-                Timestamp.fromObject = function fromObject(object) {
+                Timestamp.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Timestamp)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Timestamp();
                     if (object.seconds != null)
                         if ($util.Long)
@@ -34382,7 +35707,7 @@
                 function Any(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -34457,9 +35782,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Any.decode = function decode(reader, length, error) {
+                Any.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Any();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -34475,7 +35804,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -34506,9 +35835,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Any.verify = function verify(message) {
+                Any.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type_url != null && message.hasOwnProperty("type_url"))
                         if (!$util.isString(message.type_url))
                             return "type_url: string expected";
@@ -34526,9 +35859,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Any} Any
                  */
-                Any.fromObject = function fromObject(object) {
+                Any.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Any)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Any();
                     if (object.type_url != null)
                         message.type_url = String(object.type_url);
@@ -34645,7 +35982,7 @@
                         this.auditConfigs = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -34742,9 +36079,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Policy.decode = function decode(reader, length, error) {
+                    Policy.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.Policy();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -34758,13 +36099,13 @@
                             case 4: {
                                     if (!(message.bindings && message.bindings.length))
                                         message.bindings = [];
-                                    message.bindings.push($root.google.iam.v1.Binding.decode(reader, reader.uint32()));
+                                    message.bindings.push($root.google.iam.v1.Binding.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             case 6: {
                                     if (!(message.auditConfigs && message.auditConfigs.length))
                                         message.auditConfigs = [];
-                                    message.auditConfigs.push($root.google.iam.v1.AuditConfig.decode(reader, reader.uint32()));
+                                    message.auditConfigs.push($root.google.iam.v1.AuditConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             case 3: {
@@ -34772,7 +36113,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -34803,9 +36144,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Policy.verify = function verify(message) {
+                    Policy.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.version != null && message.hasOwnProperty("version"))
                             if (!$util.isInteger(message.version))
                                 return "version: integer expected";
@@ -34813,7 +36158,7 @@
                             if (!Array.isArray(message.bindings))
                                 return "bindings: array expected";
                             for (var i = 0; i < message.bindings.length; ++i) {
-                                var error = $root.google.iam.v1.Binding.verify(message.bindings[i]);
+                                var error = $root.google.iam.v1.Binding.verify(message.bindings[i], long + 1);
                                 if (error)
                                     return "bindings." + error;
                             }
@@ -34822,7 +36167,7 @@
                             if (!Array.isArray(message.auditConfigs))
                                 return "auditConfigs: array expected";
                             for (var i = 0; i < message.auditConfigs.length; ++i) {
-                                var error = $root.google.iam.v1.AuditConfig.verify(message.auditConfigs[i]);
+                                var error = $root.google.iam.v1.AuditConfig.verify(message.auditConfigs[i], long + 1);
                                 if (error)
                                     return "auditConfigs." + error;
                             }
@@ -34841,9 +36186,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.Policy} Policy
                      */
-                    Policy.fromObject = function fromObject(object) {
+                    Policy.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.Policy)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.Policy();
                         if (object.version != null)
                             message.version = object.version | 0;
@@ -34854,7 +36203,7 @@
                             for (var i = 0; i < object.bindings.length; ++i) {
                                 if (typeof object.bindings[i] !== "object")
                                     throw TypeError(".google.iam.v1.Policy.bindings: object expected");
-                                message.bindings[i] = $root.google.iam.v1.Binding.fromObject(object.bindings[i]);
+                                message.bindings[i] = $root.google.iam.v1.Binding.fromObject(object.bindings[i], long + 1);
                             }
                         }
                         if (object.auditConfigs) {
@@ -34864,7 +36213,7 @@
                             for (var i = 0; i < object.auditConfigs.length; ++i) {
                                 if (typeof object.auditConfigs[i] !== "object")
                                     throw TypeError(".google.iam.v1.Policy.auditConfigs: object expected");
-                                message.auditConfigs[i] = $root.google.iam.v1.AuditConfig.fromObject(object.auditConfigs[i]);
+                                message.auditConfigs[i] = $root.google.iam.v1.AuditConfig.fromObject(object.auditConfigs[i], long + 1);
                             }
                         }
                         if (object.etag != null)
@@ -34971,7 +36320,7 @@
                         this.members = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -35057,9 +36406,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Binding.decode = function decode(reader, length, error) {
+                    Binding.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.Binding();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -35077,11 +36430,11 @@
                                     break;
                                 }
                             case 3: {
-                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -35112,9 +36465,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Binding.verify = function verify(message) {
+                    Binding.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.role != null && message.hasOwnProperty("role"))
                             if (!$util.isString(message.role))
                                 return "role: string expected";
@@ -35126,7 +36483,7 @@
                                     return "members: string[] expected";
                         }
                         if (message.condition != null && message.hasOwnProperty("condition")) {
-                            var error = $root.google.type.Expr.verify(message.condition);
+                            var error = $root.google.type.Expr.verify(message.condition, long + 1);
                             if (error)
                                 return "condition." + error;
                         }
@@ -35141,9 +36498,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.Binding} Binding
                      */
-                    Binding.fromObject = function fromObject(object) {
+                    Binding.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.Binding)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.Binding();
                         if (object.role != null)
                             message.role = String(object.role);
@@ -35157,7 +36518,7 @@
                         if (object.condition != null) {
                             if (typeof object.condition !== "object")
                                 throw TypeError(".google.iam.v1.Binding.condition: object expected");
-                            message.condition = $root.google.type.Expr.fromObject(object.condition);
+                            message.condition = $root.google.type.Expr.fromObject(object.condition, long + 1);
                         }
                         return message;
                     };
@@ -35244,7 +36605,7 @@
                         this.auditLogConfigs = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -35320,9 +36681,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    AuditConfig.decode = function decode(reader, length, error) {
+                    AuditConfig.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.AuditConfig();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -35336,11 +36701,11 @@
                             case 3: {
                                     if (!(message.auditLogConfigs && message.auditLogConfigs.length))
                                         message.auditLogConfigs = [];
-                                    message.auditLogConfigs.push($root.google.iam.v1.AuditLogConfig.decode(reader, reader.uint32()));
+                                    message.auditLogConfigs.push($root.google.iam.v1.AuditLogConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -35371,9 +36736,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    AuditConfig.verify = function verify(message) {
+                    AuditConfig.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.service != null && message.hasOwnProperty("service"))
                             if (!$util.isString(message.service))
                                 return "service: string expected";
@@ -35381,7 +36750,7 @@
                             if (!Array.isArray(message.auditLogConfigs))
                                 return "auditLogConfigs: array expected";
                             for (var i = 0; i < message.auditLogConfigs.length; ++i) {
-                                var error = $root.google.iam.v1.AuditLogConfig.verify(message.auditLogConfigs[i]);
+                                var error = $root.google.iam.v1.AuditLogConfig.verify(message.auditLogConfigs[i], long + 1);
                                 if (error)
                                     return "auditLogConfigs." + error;
                             }
@@ -35397,9 +36766,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.AuditConfig} AuditConfig
                      */
-                    AuditConfig.fromObject = function fromObject(object) {
+                    AuditConfig.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.AuditConfig)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.AuditConfig();
                         if (object.service != null)
                             message.service = String(object.service);
@@ -35410,7 +36783,7 @@
                             for (var i = 0; i < object.auditLogConfigs.length; ++i) {
                                 if (typeof object.auditLogConfigs[i] !== "object")
                                     throw TypeError(".google.iam.v1.AuditConfig.auditLogConfigs: object expected");
-                                message.auditLogConfigs[i] = $root.google.iam.v1.AuditLogConfig.fromObject(object.auditLogConfigs[i]);
+                                message.auditLogConfigs[i] = $root.google.iam.v1.AuditLogConfig.fromObject(object.auditLogConfigs[i], long + 1);
                             }
                         }
                         return message;
@@ -35494,7 +36867,7 @@
                         this.exemptedMembers = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -35570,9 +36943,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    AuditLogConfig.decode = function decode(reader, length, error) {
+                    AuditLogConfig.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.AuditLogConfig();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -35590,7 +36967,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -35621,9 +36998,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    AuditLogConfig.verify = function verify(message) {
+                    AuditLogConfig.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.logType != null && message.hasOwnProperty("logType"))
                             switch (message.logType) {
                             default:
@@ -35652,9 +37033,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.AuditLogConfig} AuditLogConfig
                      */
-                    AuditLogConfig.fromObject = function fromObject(object) {
+                    AuditLogConfig.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.AuditLogConfig)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.AuditLogConfig();
                         switch (object.logType) {
                         default:
@@ -35787,7 +37172,7 @@
                         this.auditConfigDeltas = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -35864,9 +37249,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    PolicyDelta.decode = function decode(reader, length, error) {
+                    PolicyDelta.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.PolicyDelta();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -35876,17 +37265,17 @@
                             case 1: {
                                     if (!(message.bindingDeltas && message.bindingDeltas.length))
                                         message.bindingDeltas = [];
-                                    message.bindingDeltas.push($root.google.iam.v1.BindingDelta.decode(reader, reader.uint32()));
+                                    message.bindingDeltas.push($root.google.iam.v1.BindingDelta.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             case 2: {
                                     if (!(message.auditConfigDeltas && message.auditConfigDeltas.length))
                                         message.auditConfigDeltas = [];
-                                    message.auditConfigDeltas.push($root.google.iam.v1.AuditConfigDelta.decode(reader, reader.uint32()));
+                                    message.auditConfigDeltas.push($root.google.iam.v1.AuditConfigDelta.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -35917,14 +37306,18 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    PolicyDelta.verify = function verify(message) {
+                    PolicyDelta.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.bindingDeltas != null && message.hasOwnProperty("bindingDeltas")) {
                             if (!Array.isArray(message.bindingDeltas))
                                 return "bindingDeltas: array expected";
                             for (var i = 0; i < message.bindingDeltas.length; ++i) {
-                                var error = $root.google.iam.v1.BindingDelta.verify(message.bindingDeltas[i]);
+                                var error = $root.google.iam.v1.BindingDelta.verify(message.bindingDeltas[i], long + 1);
                                 if (error)
                                     return "bindingDeltas." + error;
                             }
@@ -35933,7 +37326,7 @@
                             if (!Array.isArray(message.auditConfigDeltas))
                                 return "auditConfigDeltas: array expected";
                             for (var i = 0; i < message.auditConfigDeltas.length; ++i) {
-                                var error = $root.google.iam.v1.AuditConfigDelta.verify(message.auditConfigDeltas[i]);
+                                var error = $root.google.iam.v1.AuditConfigDelta.verify(message.auditConfigDeltas[i], long + 1);
                                 if (error)
                                     return "auditConfigDeltas." + error;
                             }
@@ -35949,9 +37342,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.PolicyDelta} PolicyDelta
                      */
-                    PolicyDelta.fromObject = function fromObject(object) {
+                    PolicyDelta.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.PolicyDelta)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.PolicyDelta();
                         if (object.bindingDeltas) {
                             if (!Array.isArray(object.bindingDeltas))
@@ -35960,7 +37357,7 @@
                             for (var i = 0; i < object.bindingDeltas.length; ++i) {
                                 if (typeof object.bindingDeltas[i] !== "object")
                                     throw TypeError(".google.iam.v1.PolicyDelta.bindingDeltas: object expected");
-                                message.bindingDeltas[i] = $root.google.iam.v1.BindingDelta.fromObject(object.bindingDeltas[i]);
+                                message.bindingDeltas[i] = $root.google.iam.v1.BindingDelta.fromObject(object.bindingDeltas[i], long + 1);
                             }
                         }
                         if (object.auditConfigDeltas) {
@@ -35970,7 +37367,7 @@
                             for (var i = 0; i < object.auditConfigDeltas.length; ++i) {
                                 if (typeof object.auditConfigDeltas[i] !== "object")
                                     throw TypeError(".google.iam.v1.PolicyDelta.auditConfigDeltas: object expected");
-                                message.auditConfigDeltas[i] = $root.google.iam.v1.AuditConfigDelta.fromObject(object.auditConfigDeltas[i]);
+                                message.auditConfigDeltas[i] = $root.google.iam.v1.AuditConfigDelta.fromObject(object.auditConfigDeltas[i], long + 1);
                             }
                         }
                         return message;
@@ -36058,7 +37455,7 @@
                     function BindingDelta(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -36153,9 +37550,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    BindingDelta.decode = function decode(reader, length, error) {
+                    BindingDelta.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.BindingDelta();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -36175,11 +37576,11 @@
                                     break;
                                 }
                             case 4: {
-                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -36210,9 +37611,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    BindingDelta.verify = function verify(message) {
+                    BindingDelta.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.action != null && message.hasOwnProperty("action"))
                             switch (message.action) {
                             default:
@@ -36229,7 +37634,7 @@
                             if (!$util.isString(message.member))
                                 return "member: string expected";
                         if (message.condition != null && message.hasOwnProperty("condition")) {
-                            var error = $root.google.type.Expr.verify(message.condition);
+                            var error = $root.google.type.Expr.verify(message.condition, long + 1);
                             if (error)
                                 return "condition." + error;
                         }
@@ -36244,9 +37649,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.BindingDelta} BindingDelta
                      */
-                    BindingDelta.fromObject = function fromObject(object) {
+                    BindingDelta.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.BindingDelta)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.BindingDelta();
                         switch (object.action) {
                         default:
@@ -36275,7 +37684,7 @@
                         if (object.condition != null) {
                             if (typeof object.condition !== "object")
                                 throw TypeError(".google.iam.v1.BindingDelta.condition: object expected");
-                            message.condition = $root.google.type.Expr.fromObject(object.condition);
+                            message.condition = $root.google.type.Expr.fromObject(object.condition, long + 1);
                         }
                         return message;
                     };
@@ -36378,7 +37787,7 @@
                     function AuditConfigDelta(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -36473,9 +37882,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    AuditConfigDelta.decode = function decode(reader, length, error) {
+                    AuditConfigDelta.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.AuditConfigDelta();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -36499,7 +37912,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -36530,9 +37943,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    AuditConfigDelta.verify = function verify(message) {
+                    AuditConfigDelta.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.action != null && message.hasOwnProperty("action"))
                             switch (message.action) {
                             default:
@@ -36562,9 +37979,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.AuditConfigDelta} AuditConfigDelta
                      */
-                    AuditConfigDelta.fromObject = function fromObject(object) {
+                    AuditConfigDelta.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.AuditConfigDelta)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.AuditConfigDelta();
                         switch (object.action) {
                         default:
@@ -36708,7 +38129,7 @@
                 function Expr(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -36803,9 +38224,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Expr.decode = function decode(reader, length, error) {
+                Expr.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.Expr();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -36829,7 +38254,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -36860,9 +38285,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Expr.verify = function verify(message) {
+                Expr.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.expression != null && message.hasOwnProperty("expression"))
                         if (!$util.isString(message.expression))
                             return "expression: string expected";
@@ -36886,9 +38315,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.type.Expr} Expr
                  */
-                Expr.fromObject = function fromObject(object) {
+                Expr.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.type.Expr)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.type.Expr();
                     if (object.expression != null)
                         message.expression = String(object.expression);
@@ -36995,7 +38428,7 @@
                     this.details = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -37081,9 +38514,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Status.decode = function decode(reader, length, error) {
+                Status.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.rpc.Status();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -37101,11 +38538,11 @@
                         case 3: {
                                 if (!(message.details && message.details.length))
                                     message.details = [];
-                                message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32()));
+                                message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -37136,9 +38573,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Status.verify = function verify(message) {
+                Status.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.code != null && message.hasOwnProperty("code"))
                         if (!$util.isInteger(message.code))
                             return "code: integer expected";
@@ -37149,7 +38590,7 @@
                         if (!Array.isArray(message.details))
                             return "details: array expected";
                         for (var i = 0; i < message.details.length; ++i) {
-                            var error = $root.google.protobuf.Any.verify(message.details[i]);
+                            var error = $root.google.protobuf.Any.verify(message.details[i], long + 1);
                             if (error)
                                 return "details." + error;
                         }
@@ -37165,9 +38606,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.rpc.Status} Status
                  */
-                Status.fromObject = function fromObject(object) {
+                Status.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.rpc.Status)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.rpc.Status();
                     if (object.code != null)
                         message.code = object.code | 0;
@@ -37180,7 +38625,7 @@
                         for (var i = 0; i < object.details.length; ++i) {
                             if (typeof object.details[i] !== "object")
                                 throw TypeError(".google.rpc.Status.details: object expected");
-                            message.details[i] = $root.google.protobuf.Any.fromObject(object.details[i]);
+                            message.details[i] = $root.google.protobuf.Any.fromObject(object.details[i], long + 1);
                         }
                     }
                     return message;
diff --git a/packages/google-cloud-servicedirectory/README.md b/packages/google-cloud-servicedirectory/README.md
index c50971627147..b7a2a3e039d6 100644
--- a/packages/google-cloud-servicedirectory/README.md
+++ b/packages/google-cloud-servicedirectory/README.md
@@ -77,7 +77,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
 | update endpoint | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1/registration_service.update_endpoint.js) |
 | update namespace | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1/registration_service.update_namespace.js) |
 | update service | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1/registration_service.update_service.js) |
-| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1/snippet_metadata_google.cloud.servicedirectory.v1.json) |
 | resolve service | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1beta1/lookup_service.resolve_service.js) |
 | create endpoint | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1beta1/registration_service.create_endpoint.js) |
 | create namespace | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1beta1/registration_service.create_namespace.js) |
@@ -97,7 +96,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
 | update endpoint | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1beta1/registration_service.update_endpoint.js) |
 | update namespace | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1beta1/registration_service.update_namespace.js) |
 | update service | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1beta1/registration_service.update_service.js) |
-| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/samples/generated/v1beta1/snippet_metadata_google.cloud.servicedirectory.v1beta1.json) |
 
 
 ## Supported Node.js Versions
@@ -131,7 +129,7 @@ More Information: [Google Cloud Platform Launch Stages][launch_stages]
 
 ## Contributing
 
-Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/CONTRIBUTING.md).
+Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/CONTRIBUTING.md).
 
 Please note that this `README.md`
 and a variety of configuration files in this repository (including `.nycrc` and `tsconfig.json`)
@@ -141,7 +139,7 @@ are generated from a central template.
 
 Apache Version 2.0
 
-See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicedirectory/LICENSE)
+See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/LICENSE)
 
 [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png
 [projects]: https://console.cloud.google.com/project
diff --git a/packages/google-cloud-servicedirectory/protos/protos.d.ts b/packages/google-cloud-servicedirectory/protos/protos.d.ts
index f1b888d2baee..144c7030bdd6 100644
--- a/packages/google-cloud-servicedirectory/protos/protos.d.ts
+++ b/packages/google-cloud-servicedirectory/protos/protos.d.ts
@@ -6493,6 +6493,9 @@ export namespace google {
 
             /** CommonLanguageSettings destinations */
             destinations?: (google.api.ClientLibraryDestination[]|null);
+
+            /** CommonLanguageSettings selectiveGapicGeneration */
+            selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);
         }
 
         /** Represents a CommonLanguageSettings. */
@@ -6510,6 +6513,9 @@ export namespace google {
             /** CommonLanguageSettings destinations. */
             public destinations: google.api.ClientLibraryDestination[];
 
+            /** CommonLanguageSettings selectiveGapicGeneration. */
+            public selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);
+
             /**
              * Creates a new CommonLanguageSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -7210,6 +7216,9 @@ export namespace google {
 
             /** PythonSettings common */
             common?: (google.api.ICommonLanguageSettings|null);
+
+            /** PythonSettings experimentalFeatures */
+            experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);
         }
 
         /** Represents a PythonSettings. */
@@ -7224,6 +7233,9 @@ export namespace google {
             /** PythonSettings common. */
             public common?: (google.api.ICommonLanguageSettings|null);
 
+            /** PythonSettings experimentalFeatures. */
+            public experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);
+
             /**
              * Creates a new PythonSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -7302,6 +7314,118 @@ export namespace google {
             public static getTypeUrl(typeUrlPrefix?: string): string;
         }
 
+        namespace PythonSettings {
+
+            /** Properties of an ExperimentalFeatures. */
+            interface IExperimentalFeatures {
+
+                /** ExperimentalFeatures restAsyncIoEnabled */
+                restAsyncIoEnabled?: (boolean|null);
+
+                /** ExperimentalFeatures protobufPythonicTypesEnabled */
+                protobufPythonicTypesEnabled?: (boolean|null);
+
+                /** ExperimentalFeatures unversionedPackageDisabled */
+                unversionedPackageDisabled?: (boolean|null);
+            }
+
+            /** Represents an ExperimentalFeatures. */
+            class ExperimentalFeatures implements IExperimentalFeatures {
+
+                /**
+                 * Constructs a new ExperimentalFeatures.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.api.PythonSettings.IExperimentalFeatures);
+
+                /** ExperimentalFeatures restAsyncIoEnabled. */
+                public restAsyncIoEnabled: boolean;
+
+                /** ExperimentalFeatures protobufPythonicTypesEnabled. */
+                public protobufPythonicTypesEnabled: boolean;
+
+                /** ExperimentalFeatures unversionedPackageDisabled. */
+                public unversionedPackageDisabled: boolean;
+
+                /**
+                 * Creates a new ExperimentalFeatures instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns ExperimentalFeatures instance
+                 */
+                public static create(properties?: google.api.PythonSettings.IExperimentalFeatures): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                 * @param message ExperimentalFeatures message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                 * @param message ExperimentalFeatures message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes an ExperimentalFeatures message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns ExperimentalFeatures
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns ExperimentalFeatures
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Verifies an ExperimentalFeatures message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns ExperimentalFeatures
+                 */
+                public static fromObject(object: { [k: string]: any }): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
+                 * @param message ExperimentalFeatures
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.api.PythonSettings.ExperimentalFeatures, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this ExperimentalFeatures to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for ExperimentalFeatures
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
         /** Properties of a NodeSettings. */
         interface INodeSettings {
 
@@ -7628,6 +7752,9 @@ export namespace google {
 
             /** GoSettings common */
             common?: (google.api.ICommonLanguageSettings|null);
+
+            /** GoSettings renamedServices */
+            renamedServices?: ({ [k: string]: string }|null);
         }
 
         /** Represents a GoSettings. */
@@ -7642,6 +7769,9 @@ export namespace google {
             /** GoSettings common. */
             public common?: (google.api.ICommonLanguageSettings|null);
 
+            /** GoSettings renamedServices. */
+            public renamedServices: { [k: string]: string };
+
             /**
              * Creates a new GoSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -7966,6 +8096,109 @@ export namespace google {
             PACKAGE_MANAGER = 20
         }
 
+        /** Properties of a SelectiveGapicGeneration. */
+        interface ISelectiveGapicGeneration {
+
+            /** SelectiveGapicGeneration methods */
+            methods?: (string[]|null);
+
+            /** SelectiveGapicGeneration generateOmittedAsInternal */
+            generateOmittedAsInternal?: (boolean|null);
+        }
+
+        /** Represents a SelectiveGapicGeneration. */
+        class SelectiveGapicGeneration implements ISelectiveGapicGeneration {
+
+            /**
+             * Constructs a new SelectiveGapicGeneration.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.ISelectiveGapicGeneration);
+
+            /** SelectiveGapicGeneration methods. */
+            public methods: string[];
+
+            /** SelectiveGapicGeneration generateOmittedAsInternal. */
+            public generateOmittedAsInternal: boolean;
+
+            /**
+             * Creates a new SelectiveGapicGeneration instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns SelectiveGapicGeneration instance
+             */
+            public static create(properties?: google.api.ISelectiveGapicGeneration): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+             * @param message SelectiveGapicGeneration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+             * @param message SelectiveGapicGeneration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns SelectiveGapicGeneration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns SelectiveGapicGeneration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Verifies a SelectiveGapicGeneration message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns SelectiveGapicGeneration
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
+             * @param message SelectiveGapicGeneration
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.SelectiveGapicGeneration, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this SelectiveGapicGeneration to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for SelectiveGapicGeneration
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
         /** LaunchStage enum. */
         enum LaunchStage {
             LAUNCH_STAGE_UNSPECIFIED = 0,
@@ -8082,6 +8315,7 @@ export namespace google {
         /** Edition enum. */
         enum Edition {
             EDITION_UNKNOWN = 0,
+            EDITION_LEGACY = 900,
             EDITION_PROTO2 = 998,
             EDITION_PROTO3 = 999,
             EDITION_2023 = 1000,
@@ -8112,6 +8346,9 @@ export namespace google {
             /** FileDescriptorProto weakDependency */
             weakDependency?: (number[]|null);
 
+            /** FileDescriptorProto optionDependency */
+            optionDependency?: (string[]|null);
+
             /** FileDescriptorProto messageType */
             messageType?: (google.protobuf.IDescriptorProto[]|null);
 
@@ -8161,6 +8398,9 @@ export namespace google {
             /** FileDescriptorProto weakDependency. */
             public weakDependency: number[];
 
+            /** FileDescriptorProto optionDependency. */
+            public optionDependency: string[];
+
             /** FileDescriptorProto messageType. */
             public messageType: google.protobuf.IDescriptorProto[];
 
@@ -8295,6 +8535,9 @@ export namespace google {
 
             /** DescriptorProto reservedName */
             reservedName?: (string[]|null);
+
+            /** DescriptorProto visibility */
+            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
         }
 
         /** Represents a DescriptorProto. */
@@ -8336,6 +8579,9 @@ export namespace google {
             /** DescriptorProto reservedName. */
             public reservedName: string[];
 
+            /** DescriptorProto visibility. */
+            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);
+
             /**
              * Creates a new DescriptorProto instance using the specified properties.
              * @param [properties] Properties to set
@@ -9183,6 +9429,9 @@ export namespace google {
 
             /** EnumDescriptorProto reservedName */
             reservedName?: (string[]|null);
+
+            /** EnumDescriptorProto visibility */
+            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
         }
 
         /** Represents an EnumDescriptorProto. */
@@ -9209,6 +9458,9 @@ export namespace google {
             /** EnumDescriptorProto reservedName. */
             public reservedName: string[];
 
+            /** EnumDescriptorProto visibility. */
+            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);
+
             /**
              * Creates a new EnumDescriptorProto instance using the specified properties.
              * @param [properties] Properties to set
@@ -10143,6 +10395,9 @@ export namespace google {
             /** FieldOptions features */
             features?: (google.protobuf.IFeatureSet|null);
 
+            /** FieldOptions featureSupport */
+            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** FieldOptions uninterpretedOption */
             uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
 
@@ -10198,6 +10453,9 @@ export namespace google {
             /** FieldOptions features. */
             public features?: (google.protobuf.IFeatureSet|null);
 
+            /** FieldOptions featureSupport. */
+            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** FieldOptions uninterpretedOption. */
             public uninterpretedOption: google.protobuf.IUninterpretedOption[];
 
@@ -10418,6 +10676,121 @@ export namespace google {
                  */
                 public static getTypeUrl(typeUrlPrefix?: string): string;
             }
+
+            /** Properties of a FeatureSupport. */
+            interface IFeatureSupport {
+
+                /** FeatureSupport editionIntroduced */
+                editionIntroduced?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** FeatureSupport editionDeprecated */
+                editionDeprecated?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** FeatureSupport deprecationWarning */
+                deprecationWarning?: (string|null);
+
+                /** FeatureSupport editionRemoved */
+                editionRemoved?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+            }
+
+            /** Represents a FeatureSupport. */
+            class FeatureSupport implements IFeatureSupport {
+
+                /**
+                 * Constructs a new FeatureSupport.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FieldOptions.IFeatureSupport);
+
+                /** FeatureSupport editionIntroduced. */
+                public editionIntroduced: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** FeatureSupport editionDeprecated. */
+                public editionDeprecated: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** FeatureSupport deprecationWarning. */
+                public deprecationWarning: string;
+
+                /** FeatureSupport editionRemoved. */
+                public editionRemoved: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /**
+                 * Creates a new FeatureSupport instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns FeatureSupport instance
+                 */
+                public static create(properties?: google.protobuf.FieldOptions.IFeatureSupport): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                 * @param message FeatureSupport message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                 * @param message FeatureSupport message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a FeatureSupport message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns FeatureSupport
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns FeatureSupport
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Verifies a FeatureSupport message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns FeatureSupport
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified.
+                 * @param message FeatureSupport
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FieldOptions.FeatureSupport, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this FeatureSupport to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for FeatureSupport
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
         }
 
         /** Properties of an OneofOptions. */
@@ -10656,6 +11029,9 @@ export namespace google {
             /** EnumValueOptions debugRedact */
             debugRedact?: (boolean|null);
 
+            /** EnumValueOptions featureSupport */
+            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** EnumValueOptions uninterpretedOption */
             uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
         }
@@ -10678,6 +11054,9 @@ export namespace google {
             /** EnumValueOptions debugRedact. */
             public debugRedact: boolean;
 
+            /** EnumValueOptions featureSupport. */
+            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** EnumValueOptions uninterpretedOption. */
             public uninterpretedOption: google.protobuf.IUninterpretedOption[];
 
@@ -11267,6 +11646,12 @@ export namespace google {
 
             /** FeatureSet jsonFormat */
             jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null);
+
+            /** FeatureSet enforceNamingStyle */
+            enforceNamingStyle?: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle|null);
+
+            /** FeatureSet defaultSymbolVisibility */
+            defaultSymbolVisibility?: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null);
         }
 
         /** Represents a FeatureSet. */
@@ -11296,6 +11681,12 @@ export namespace google {
             /** FeatureSet jsonFormat. */
             public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat);
 
+            /** FeatureSet enforceNamingStyle. */
+            public enforceNamingStyle: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle);
+
+            /** FeatureSet defaultSymbolVisibility. */
+            public defaultSymbolVisibility: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility);
+
             /**
              * Creates a new FeatureSet instance using the specified properties.
              * @param [properties] Properties to set
@@ -11418,6 +11809,116 @@ export namespace google {
                 ALLOW = 1,
                 LEGACY_BEST_EFFORT = 2
             }
+
+            /** EnforceNamingStyle enum. */
+            enum EnforceNamingStyle {
+                ENFORCE_NAMING_STYLE_UNKNOWN = 0,
+                STYLE2024 = 1,
+                STYLE_LEGACY = 2
+            }
+
+            /** Properties of a VisibilityFeature. */
+            interface IVisibilityFeature {
+            }
+
+            /** Represents a VisibilityFeature. */
+            class VisibilityFeature implements IVisibilityFeature {
+
+                /**
+                 * Constructs a new VisibilityFeature.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FeatureSet.IVisibilityFeature);
+
+                /**
+                 * Creates a new VisibilityFeature instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns VisibilityFeature instance
+                 */
+                public static create(properties?: google.protobuf.FeatureSet.IVisibilityFeature): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                 * @param message VisibilityFeature message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                 * @param message VisibilityFeature message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a VisibilityFeature message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns VisibilityFeature
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns VisibilityFeature
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Verifies a VisibilityFeature message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns VisibilityFeature
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified.
+                 * @param message VisibilityFeature
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FeatureSet.VisibilityFeature, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this VisibilityFeature to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for VisibilityFeature
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+
+            namespace VisibilityFeature {
+
+                /** DefaultSymbolVisibility enum. */
+                enum DefaultSymbolVisibility {
+                    DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0,
+                    EXPORT_ALL = 1,
+                    EXPORT_TOP_LEVEL = 2,
+                    LOCAL_ALL = 3,
+                    STRICT = 4
+                }
+            }
         }
 
         /** Properties of a FeatureSetDefaults. */
@@ -11537,8 +12038,11 @@ export namespace google {
                 /** FeatureSetEditionDefault edition */
                 edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
 
-                /** FeatureSetEditionDefault features */
-                features?: (google.protobuf.IFeatureSet|null);
+                /** FeatureSetEditionDefault overridableFeatures */
+                overridableFeatures?: (google.protobuf.IFeatureSet|null);
+
+                /** FeatureSetEditionDefault fixedFeatures */
+                fixedFeatures?: (google.protobuf.IFeatureSet|null);
             }
 
             /** Represents a FeatureSetEditionDefault. */
@@ -11553,8 +12057,11 @@ export namespace google {
                 /** FeatureSetEditionDefault edition. */
                 public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
 
-                /** FeatureSetEditionDefault features. */
-                public features?: (google.protobuf.IFeatureSet|null);
+                /** FeatureSetEditionDefault overridableFeatures. */
+                public overridableFeatures?: (google.protobuf.IFeatureSet|null);
+
+                /** FeatureSetEditionDefault fixedFeatures. */
+                public fixedFeatures?: (google.protobuf.IFeatureSet|null);
 
                 /**
                  * Creates a new FeatureSetEditionDefault instance using the specified properties.
@@ -12087,6 +12594,13 @@ export namespace google {
             }
         }
 
+        /** SymbolVisibility enum. */
+        enum SymbolVisibility {
+            VISIBILITY_UNSET = 0,
+            VISIBILITY_LOCAL = 1,
+            VISIBILITY_EXPORT = 2
+        }
+
         /** Properties of a Duration. */
         interface IDuration {
 
diff --git a/packages/google-cloud-servicedirectory/protos/protos.js b/packages/google-cloud-servicedirectory/protos/protos.js
index 8de2ee233ef9..72104c0c70db 100644
--- a/packages/google-cloud-servicedirectory/protos/protos.js
+++ b/packages/google-cloud-servicedirectory/protos/protos.js
@@ -92,7 +92,7 @@
                             this.annotations = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -208,9 +208,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Endpoint.decode = function decode(reader, length, error) {
+                        Endpoint.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.Endpoint(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -245,10 +249,12 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.annotations, key);
                                         message.annotations[key] = value;
                                         break;
                                     }
@@ -261,7 +267,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -292,9 +298,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Endpoint.verify = function verify(message) {
+                        Endpoint.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -329,9 +339,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.Endpoint} Endpoint
                          */
-                        Endpoint.fromObject = function fromObject(object) {
+                        Endpoint.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.Endpoint)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.Endpoint();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -343,8 +357,11 @@
                                 if (typeof object.annotations !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.Endpoint.annotations: object expected");
                                 message.annotations = {};
-                                for (var keys = Object.keys(object.annotations), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.annotations), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.annotations, keys[i]);
                                     message.annotations[keys[i]] = String(object.annotations[keys[i]]);
+                                }
                             }
                             if (object.network != null)
                                 message.network = String(object.network);
@@ -384,8 +401,11 @@
                             var keys2;
                             if (message.annotations && (keys2 = Object.keys(message.annotations)).length) {
                                 object.annotations = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.annotations, keys2[j]);
                                     object.annotations[keys2[j]] = message.annotations[keys2[j]];
+                                }
                             }
                             if (message.network != null && message.hasOwnProperty("network"))
                                 object.network = message.network;
@@ -513,7 +533,7 @@
                         function ResolveServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -598,9 +618,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResolveServiceRequest.decode = function decode(reader, length, error) {
+                        ResolveServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.ResolveServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -620,7 +644,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -651,9 +675,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResolveServiceRequest.verify = function verify(message) {
+                        ResolveServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -674,9 +702,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.ResolveServiceRequest} ResolveServiceRequest
                          */
-                        ResolveServiceRequest.fromObject = function fromObject(object) {
+                        ResolveServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.ResolveServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.ResolveServiceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -763,7 +795,7 @@
                         function ResolveServiceResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -828,9 +860,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResolveServiceResponse.decode = function decode(reader, length, error) {
+                        ResolveServiceResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.ResolveServiceResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -838,11 +874,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.service = $root.google.cloud.servicedirectory.v1.Service.decode(reader, reader.uint32());
+                                        message.service = $root.google.cloud.servicedirectory.v1.Service.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -873,11 +909,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResolveServiceResponse.verify = function verify(message) {
+                        ResolveServiceResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.service != null && message.hasOwnProperty("service")) {
-                                var error = $root.google.cloud.servicedirectory.v1.Service.verify(message.service);
+                                var error = $root.google.cloud.servicedirectory.v1.Service.verify(message.service, long + 1);
                                 if (error)
                                     return "service." + error;
                             }
@@ -892,14 +932,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.ResolveServiceResponse} ResolveServiceResponse
                          */
-                        ResolveServiceResponse.fromObject = function fromObject(object) {
+                        ResolveServiceResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.ResolveServiceResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.ResolveServiceResponse();
                             if (object.service != null) {
                                 if (typeof object.service !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.ResolveServiceResponse.service: object expected");
-                                message.service = $root.google.cloud.servicedirectory.v1.Service.fromObject(object.service);
+                                message.service = $root.google.cloud.servicedirectory.v1.Service.fromObject(object.service, long + 1);
                             }
                             return message;
                         };
@@ -978,7 +1022,7 @@
                             this.endpoints = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1075,9 +1119,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Service.decode = function decode(reader, length, error) {
+                        Service.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.Service(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1104,17 +1152,19 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.annotations, key);
                                         message.annotations[key] = value;
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.endpoints && message.endpoints.length))
                                             message.endpoints = [];
-                                        message.endpoints.push($root.google.cloud.servicedirectory.v1.Endpoint.decode(reader, reader.uint32()));
+                                        message.endpoints.push($root.google.cloud.servicedirectory.v1.Endpoint.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 7: {
@@ -1122,7 +1172,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1153,9 +1203,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Service.verify = function verify(message) {
+                        Service.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -1171,7 +1225,7 @@
                                 if (!Array.isArray(message.endpoints))
                                     return "endpoints: array expected";
                                 for (var i = 0; i < message.endpoints.length; ++i) {
-                                    var error = $root.google.cloud.servicedirectory.v1.Endpoint.verify(message.endpoints[i]);
+                                    var error = $root.google.cloud.servicedirectory.v1.Endpoint.verify(message.endpoints[i], long + 1);
                                     if (error)
                                         return "endpoints." + error;
                                 }
@@ -1190,9 +1244,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.Service} Service
                          */
-                        Service.fromObject = function fromObject(object) {
+                        Service.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.Service)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.Service();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -1200,8 +1258,11 @@
                                 if (typeof object.annotations !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.Service.annotations: object expected");
                                 message.annotations = {};
-                                for (var keys = Object.keys(object.annotations), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.annotations), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.annotations, keys[i]);
                                     message.annotations[keys[i]] = String(object.annotations[keys[i]]);
+                                }
                             }
                             if (object.endpoints) {
                                 if (!Array.isArray(object.endpoints))
@@ -1210,7 +1271,7 @@
                                 for (var i = 0; i < object.endpoints.length; ++i) {
                                     if (typeof object.endpoints[i] !== "object")
                                         throw TypeError(".google.cloud.servicedirectory.v1.Service.endpoints: object expected");
-                                    message.endpoints[i] = $root.google.cloud.servicedirectory.v1.Endpoint.fromObject(object.endpoints[i]);
+                                    message.endpoints[i] = $root.google.cloud.servicedirectory.v1.Endpoint.fromObject(object.endpoints[i], long + 1);
                                 }
                             }
                             if (object.uid != null)
@@ -1249,8 +1310,11 @@
                             var keys2;
                             if (message.annotations && (keys2 = Object.keys(message.annotations)).length) {
                                 object.annotations = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.annotations, keys2[j]);
                                     object.annotations[keys2[j]] = message.annotations[keys2[j]];
+                                }
                             }
                             if (message.uid != null && message.hasOwnProperty("uid"))
                                 object.uid = message.uid;
@@ -1309,7 +1373,7 @@
                             this.labels = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1395,9 +1459,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Namespace.decode = function decode(reader, length, error) {
+                        Namespace.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.Namespace(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1424,10 +1492,12 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.labels, key);
                                         message.labels[key] = value;
                                         break;
                                     }
@@ -1436,7 +1506,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1467,9 +1537,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Namespace.verify = function verify(message) {
+                        Namespace.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -1495,9 +1569,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.Namespace} Namespace
                          */
-                        Namespace.fromObject = function fromObject(object) {
+                        Namespace.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.Namespace)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.Namespace();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -1505,8 +1583,11 @@
                                 if (typeof object.labels !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.Namespace.labels: object expected");
                                 message.labels = {};
-                                for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.labels, keys[i]);
                                     message.labels[keys[i]] = String(object.labels[keys[i]]);
+                                }
                             }
                             if (object.uid != null)
                                 message.uid = String(object.uid);
@@ -1537,8 +1618,11 @@
                             var keys2;
                             if (message.labels && (keys2 = Object.keys(message.labels)).length) {
                                 object.labels = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.labels, keys2[j]);
                                     object.labels[keys2[j]] = message.labels[keys2[j]];
+                                }
                             }
                             if (message.uid != null && message.hasOwnProperty("uid"))
                                 object.uid = message.uid;
@@ -2225,7 +2309,7 @@
                         function CreateNamespaceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2310,9 +2394,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateNamespaceRequest.decode = function decode(reader, length, error) {
+                        CreateNamespaceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.CreateNamespaceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2328,11 +2416,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.namespace = $root.google.cloud.servicedirectory.v1.Namespace.decode(reader, reader.uint32());
+                                        message.namespace = $root.google.cloud.servicedirectory.v1.Namespace.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2363,9 +2451,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateNamespaceRequest.verify = function verify(message) {
+                        CreateNamespaceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -2373,7 +2465,7 @@
                                 if (!$util.isString(message.namespaceId))
                                     return "namespaceId: string expected";
                             if (message.namespace != null && message.hasOwnProperty("namespace")) {
-                                var error = $root.google.cloud.servicedirectory.v1.Namespace.verify(message.namespace);
+                                var error = $root.google.cloud.servicedirectory.v1.Namespace.verify(message.namespace, long + 1);
                                 if (error)
                                     return "namespace." + error;
                             }
@@ -2388,9 +2480,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.CreateNamespaceRequest} CreateNamespaceRequest
                          */
-                        CreateNamespaceRequest.fromObject = function fromObject(object) {
+                        CreateNamespaceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.CreateNamespaceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.CreateNamespaceRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -2399,7 +2495,7 @@
                             if (object.namespace != null) {
                                 if (typeof object.namespace !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.CreateNamespaceRequest.namespace: object expected");
-                                message.namespace = $root.google.cloud.servicedirectory.v1.Namespace.fromObject(object.namespace);
+                                message.namespace = $root.google.cloud.servicedirectory.v1.Namespace.fromObject(object.namespace, long + 1);
                             }
                             return message;
                         };
@@ -2484,7 +2580,7 @@
                         function ListNamespacesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2589,9 +2685,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNamespacesRequest.decode = function decode(reader, length, error) {
+                        ListNamespacesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.ListNamespacesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2619,7 +2719,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2650,9 +2750,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNamespacesRequest.verify = function verify(message) {
+                        ListNamespacesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -2679,9 +2783,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.ListNamespacesRequest} ListNamespacesRequest
                          */
-                        ListNamespacesRequest.fromObject = function fromObject(object) {
+                        ListNamespacesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.ListNamespacesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.ListNamespacesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -2780,7 +2888,7 @@
                             this.namespaces = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2856,9 +2964,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNamespacesResponse.decode = function decode(reader, length, error) {
+                        ListNamespacesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.ListNamespacesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2868,7 +2980,7 @@
                                 case 1: {
                                         if (!(message.namespaces && message.namespaces.length))
                                             message.namespaces = [];
-                                        message.namespaces.push($root.google.cloud.servicedirectory.v1.Namespace.decode(reader, reader.uint32()));
+                                        message.namespaces.push($root.google.cloud.servicedirectory.v1.Namespace.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -2876,7 +2988,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2907,14 +3019,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNamespacesResponse.verify = function verify(message) {
+                        ListNamespacesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.namespaces != null && message.hasOwnProperty("namespaces")) {
                                 if (!Array.isArray(message.namespaces))
                                     return "namespaces: array expected";
                                 for (var i = 0; i < message.namespaces.length; ++i) {
-                                    var error = $root.google.cloud.servicedirectory.v1.Namespace.verify(message.namespaces[i]);
+                                    var error = $root.google.cloud.servicedirectory.v1.Namespace.verify(message.namespaces[i], long + 1);
                                     if (error)
                                         return "namespaces." + error;
                                 }
@@ -2933,9 +3049,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.ListNamespacesResponse} ListNamespacesResponse
                          */
-                        ListNamespacesResponse.fromObject = function fromObject(object) {
+                        ListNamespacesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.ListNamespacesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.ListNamespacesResponse();
                             if (object.namespaces) {
                                 if (!Array.isArray(object.namespaces))
@@ -2944,7 +3064,7 @@
                                 for (var i = 0; i < object.namespaces.length; ++i) {
                                     if (typeof object.namespaces[i] !== "object")
                                         throw TypeError(".google.cloud.servicedirectory.v1.ListNamespacesResponse.namespaces: object expected");
-                                    message.namespaces[i] = $root.google.cloud.servicedirectory.v1.Namespace.fromObject(object.namespaces[i]);
+                                    message.namespaces[i] = $root.google.cloud.servicedirectory.v1.Namespace.fromObject(object.namespaces[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -3028,7 +3148,7 @@
                         function GetNamespaceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3093,9 +3213,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetNamespaceRequest.decode = function decode(reader, length, error) {
+                        GetNamespaceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.GetNamespaceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3107,7 +3231,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3138,9 +3262,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetNamespaceRequest.verify = function verify(message) {
+                        GetNamespaceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -3155,9 +3283,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.GetNamespaceRequest} GetNamespaceRequest
                          */
-                        GetNamespaceRequest.fromObject = function fromObject(object) {
+                        GetNamespaceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.GetNamespaceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.GetNamespaceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -3234,7 +3366,7 @@
                         function UpdateNamespaceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3309,9 +3441,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateNamespaceRequest.decode = function decode(reader, length, error) {
+                        UpdateNamespaceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.UpdateNamespaceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3319,15 +3455,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.namespace = $root.google.cloud.servicedirectory.v1.Namespace.decode(reader, reader.uint32());
+                                        message.namespace = $root.google.cloud.servicedirectory.v1.Namespace.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3358,16 +3494,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateNamespaceRequest.verify = function verify(message) {
+                        UpdateNamespaceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.namespace != null && message.hasOwnProperty("namespace")) {
-                                var error = $root.google.cloud.servicedirectory.v1.Namespace.verify(message.namespace);
+                                var error = $root.google.cloud.servicedirectory.v1.Namespace.verify(message.namespace, long + 1);
                                 if (error)
                                     return "namespace." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -3382,19 +3522,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.UpdateNamespaceRequest} UpdateNamespaceRequest
                          */
-                        UpdateNamespaceRequest.fromObject = function fromObject(object) {
+                        UpdateNamespaceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.UpdateNamespaceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.UpdateNamespaceRequest();
                             if (object.namespace != null) {
                                 if (typeof object.namespace !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.UpdateNamespaceRequest.namespace: object expected");
-                                message.namespace = $root.google.cloud.servicedirectory.v1.Namespace.fromObject(object.namespace);
+                                message.namespace = $root.google.cloud.servicedirectory.v1.Namespace.fromObject(object.namespace, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.UpdateNamespaceRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -3472,7 +3616,7 @@
                         function DeleteNamespaceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3537,9 +3681,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteNamespaceRequest.decode = function decode(reader, length, error) {
+                        DeleteNamespaceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.DeleteNamespaceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3551,7 +3699,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3582,9 +3730,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteNamespaceRequest.verify = function verify(message) {
+                        DeleteNamespaceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -3599,9 +3751,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.DeleteNamespaceRequest} DeleteNamespaceRequest
                          */
-                        DeleteNamespaceRequest.fromObject = function fromObject(object) {
+                        DeleteNamespaceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.DeleteNamespaceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.DeleteNamespaceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -3679,7 +3835,7 @@
                         function CreateServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3764,9 +3920,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateServiceRequest.decode = function decode(reader, length, error) {
+                        CreateServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.CreateServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3782,11 +3942,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.service = $root.google.cloud.servicedirectory.v1.Service.decode(reader, reader.uint32());
+                                        message.service = $root.google.cloud.servicedirectory.v1.Service.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3817,9 +3977,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateServiceRequest.verify = function verify(message) {
+                        CreateServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -3827,7 +3991,7 @@
                                 if (!$util.isString(message.serviceId))
                                     return "serviceId: string expected";
                             if (message.service != null && message.hasOwnProperty("service")) {
-                                var error = $root.google.cloud.servicedirectory.v1.Service.verify(message.service);
+                                var error = $root.google.cloud.servicedirectory.v1.Service.verify(message.service, long + 1);
                                 if (error)
                                     return "service." + error;
                             }
@@ -3842,9 +4006,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.CreateServiceRequest} CreateServiceRequest
                          */
-                        CreateServiceRequest.fromObject = function fromObject(object) {
+                        CreateServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.CreateServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.CreateServiceRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -3853,7 +4021,7 @@
                             if (object.service != null) {
                                 if (typeof object.service !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.CreateServiceRequest.service: object expected");
-                                message.service = $root.google.cloud.servicedirectory.v1.Service.fromObject(object.service);
+                                message.service = $root.google.cloud.servicedirectory.v1.Service.fromObject(object.service, long + 1);
                             }
                             return message;
                         };
@@ -3938,7 +4106,7 @@
                         function ListServicesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4043,9 +4211,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListServicesRequest.decode = function decode(reader, length, error) {
+                        ListServicesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.ListServicesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4073,7 +4245,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4104,9 +4276,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListServicesRequest.verify = function verify(message) {
+                        ListServicesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -4133,9 +4309,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.ListServicesRequest} ListServicesRequest
                          */
-                        ListServicesRequest.fromObject = function fromObject(object) {
+                        ListServicesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.ListServicesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.ListServicesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -4234,7 +4414,7 @@
                             this.services = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4310,9 +4490,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListServicesResponse.decode = function decode(reader, length, error) {
+                        ListServicesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.ListServicesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4322,7 +4506,7 @@
                                 case 1: {
                                         if (!(message.services && message.services.length))
                                             message.services = [];
-                                        message.services.push($root.google.cloud.servicedirectory.v1.Service.decode(reader, reader.uint32()));
+                                        message.services.push($root.google.cloud.servicedirectory.v1.Service.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -4330,7 +4514,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4361,14 +4545,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListServicesResponse.verify = function verify(message) {
+                        ListServicesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.services != null && message.hasOwnProperty("services")) {
                                 if (!Array.isArray(message.services))
                                     return "services: array expected";
                                 for (var i = 0; i < message.services.length; ++i) {
-                                    var error = $root.google.cloud.servicedirectory.v1.Service.verify(message.services[i]);
+                                    var error = $root.google.cloud.servicedirectory.v1.Service.verify(message.services[i], long + 1);
                                     if (error)
                                         return "services." + error;
                                 }
@@ -4387,9 +4575,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.ListServicesResponse} ListServicesResponse
                          */
-                        ListServicesResponse.fromObject = function fromObject(object) {
+                        ListServicesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.ListServicesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.ListServicesResponse();
                             if (object.services) {
                                 if (!Array.isArray(object.services))
@@ -4398,7 +4590,7 @@
                                 for (var i = 0; i < object.services.length; ++i) {
                                     if (typeof object.services[i] !== "object")
                                         throw TypeError(".google.cloud.servicedirectory.v1.ListServicesResponse.services: object expected");
-                                    message.services[i] = $root.google.cloud.servicedirectory.v1.Service.fromObject(object.services[i]);
+                                    message.services[i] = $root.google.cloud.servicedirectory.v1.Service.fromObject(object.services[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -4482,7 +4674,7 @@
                         function GetServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4547,9 +4739,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetServiceRequest.decode = function decode(reader, length, error) {
+                        GetServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.GetServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4561,7 +4757,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4592,9 +4788,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetServiceRequest.verify = function verify(message) {
+                        GetServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -4609,9 +4809,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.GetServiceRequest} GetServiceRequest
                          */
-                        GetServiceRequest.fromObject = function fromObject(object) {
+                        GetServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.GetServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.GetServiceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -4688,7 +4892,7 @@
                         function UpdateServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4763,9 +4967,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateServiceRequest.decode = function decode(reader, length, error) {
+                        UpdateServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.UpdateServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4773,15 +4981,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.service = $root.google.cloud.servicedirectory.v1.Service.decode(reader, reader.uint32());
+                                        message.service = $root.google.cloud.servicedirectory.v1.Service.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4812,16 +5020,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateServiceRequest.verify = function verify(message) {
+                        UpdateServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.service != null && message.hasOwnProperty("service")) {
-                                var error = $root.google.cloud.servicedirectory.v1.Service.verify(message.service);
+                                var error = $root.google.cloud.servicedirectory.v1.Service.verify(message.service, long + 1);
                                 if (error)
                                     return "service." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -4836,19 +5048,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.UpdateServiceRequest} UpdateServiceRequest
                          */
-                        UpdateServiceRequest.fromObject = function fromObject(object) {
+                        UpdateServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.UpdateServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.UpdateServiceRequest();
                             if (object.service != null) {
                                 if (typeof object.service !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.UpdateServiceRequest.service: object expected");
-                                message.service = $root.google.cloud.servicedirectory.v1.Service.fromObject(object.service);
+                                message.service = $root.google.cloud.servicedirectory.v1.Service.fromObject(object.service, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.UpdateServiceRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -4926,7 +5142,7 @@
                         function DeleteServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4991,9 +5207,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteServiceRequest.decode = function decode(reader, length, error) {
+                        DeleteServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.DeleteServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5005,7 +5225,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5036,9 +5256,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteServiceRequest.verify = function verify(message) {
+                        DeleteServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -5053,9 +5277,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.DeleteServiceRequest} DeleteServiceRequest
                          */
-                        DeleteServiceRequest.fromObject = function fromObject(object) {
+                        DeleteServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.DeleteServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.DeleteServiceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -5133,7 +5361,7 @@
                         function CreateEndpointRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5218,9 +5446,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateEndpointRequest.decode = function decode(reader, length, error) {
+                        CreateEndpointRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.CreateEndpointRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5236,11 +5468,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.endpoint = $root.google.cloud.servicedirectory.v1.Endpoint.decode(reader, reader.uint32());
+                                        message.endpoint = $root.google.cloud.servicedirectory.v1.Endpoint.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5271,9 +5503,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateEndpointRequest.verify = function verify(message) {
+                        CreateEndpointRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -5281,7 +5517,7 @@
                                 if (!$util.isString(message.endpointId))
                                     return "endpointId: string expected";
                             if (message.endpoint != null && message.hasOwnProperty("endpoint")) {
-                                var error = $root.google.cloud.servicedirectory.v1.Endpoint.verify(message.endpoint);
+                                var error = $root.google.cloud.servicedirectory.v1.Endpoint.verify(message.endpoint, long + 1);
                                 if (error)
                                     return "endpoint." + error;
                             }
@@ -5296,9 +5532,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.CreateEndpointRequest} CreateEndpointRequest
                          */
-                        CreateEndpointRequest.fromObject = function fromObject(object) {
+                        CreateEndpointRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.CreateEndpointRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.CreateEndpointRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -5307,7 +5547,7 @@
                             if (object.endpoint != null) {
                                 if (typeof object.endpoint !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.CreateEndpointRequest.endpoint: object expected");
-                                message.endpoint = $root.google.cloud.servicedirectory.v1.Endpoint.fromObject(object.endpoint);
+                                message.endpoint = $root.google.cloud.servicedirectory.v1.Endpoint.fromObject(object.endpoint, long + 1);
                             }
                             return message;
                         };
@@ -5392,7 +5632,7 @@
                         function ListEndpointsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5497,9 +5737,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEndpointsRequest.decode = function decode(reader, length, error) {
+                        ListEndpointsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.ListEndpointsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5527,7 +5771,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5558,9 +5802,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEndpointsRequest.verify = function verify(message) {
+                        ListEndpointsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -5587,9 +5835,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.ListEndpointsRequest} ListEndpointsRequest
                          */
-                        ListEndpointsRequest.fromObject = function fromObject(object) {
+                        ListEndpointsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.ListEndpointsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.ListEndpointsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -5688,7 +5940,7 @@
                             this.endpoints = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5764,9 +6016,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEndpointsResponse.decode = function decode(reader, length, error) {
+                        ListEndpointsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.ListEndpointsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5776,7 +6032,7 @@
                                 case 1: {
                                         if (!(message.endpoints && message.endpoints.length))
                                             message.endpoints = [];
-                                        message.endpoints.push($root.google.cloud.servicedirectory.v1.Endpoint.decode(reader, reader.uint32()));
+                                        message.endpoints.push($root.google.cloud.servicedirectory.v1.Endpoint.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -5784,7 +6040,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5815,14 +6071,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEndpointsResponse.verify = function verify(message) {
+                        ListEndpointsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.endpoints != null && message.hasOwnProperty("endpoints")) {
                                 if (!Array.isArray(message.endpoints))
                                     return "endpoints: array expected";
                                 for (var i = 0; i < message.endpoints.length; ++i) {
-                                    var error = $root.google.cloud.servicedirectory.v1.Endpoint.verify(message.endpoints[i]);
+                                    var error = $root.google.cloud.servicedirectory.v1.Endpoint.verify(message.endpoints[i], long + 1);
                                     if (error)
                                         return "endpoints." + error;
                                 }
@@ -5841,9 +6101,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.ListEndpointsResponse} ListEndpointsResponse
                          */
-                        ListEndpointsResponse.fromObject = function fromObject(object) {
+                        ListEndpointsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.ListEndpointsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.ListEndpointsResponse();
                             if (object.endpoints) {
                                 if (!Array.isArray(object.endpoints))
@@ -5852,7 +6116,7 @@
                                 for (var i = 0; i < object.endpoints.length; ++i) {
                                     if (typeof object.endpoints[i] !== "object")
                                         throw TypeError(".google.cloud.servicedirectory.v1.ListEndpointsResponse.endpoints: object expected");
-                                    message.endpoints[i] = $root.google.cloud.servicedirectory.v1.Endpoint.fromObject(object.endpoints[i]);
+                                    message.endpoints[i] = $root.google.cloud.servicedirectory.v1.Endpoint.fromObject(object.endpoints[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -5936,7 +6200,7 @@
                         function GetEndpointRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6001,9 +6265,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEndpointRequest.decode = function decode(reader, length, error) {
+                        GetEndpointRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.GetEndpointRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6015,7 +6283,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -6046,9 +6314,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEndpointRequest.verify = function verify(message) {
+                        GetEndpointRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -6063,9 +6335,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.GetEndpointRequest} GetEndpointRequest
                          */
-                        GetEndpointRequest.fromObject = function fromObject(object) {
+                        GetEndpointRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.GetEndpointRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.GetEndpointRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -6142,7 +6418,7 @@
                         function UpdateEndpointRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6217,9 +6493,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateEndpointRequest.decode = function decode(reader, length, error) {
+                        UpdateEndpointRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.UpdateEndpointRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6227,15 +6507,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.endpoint = $root.google.cloud.servicedirectory.v1.Endpoint.decode(reader, reader.uint32());
+                                        message.endpoint = $root.google.cloud.servicedirectory.v1.Endpoint.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -6266,16 +6546,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateEndpointRequest.verify = function verify(message) {
+                        UpdateEndpointRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.endpoint != null && message.hasOwnProperty("endpoint")) {
-                                var error = $root.google.cloud.servicedirectory.v1.Endpoint.verify(message.endpoint);
+                                var error = $root.google.cloud.servicedirectory.v1.Endpoint.verify(message.endpoint, long + 1);
                                 if (error)
                                     return "endpoint." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -6290,19 +6574,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.UpdateEndpointRequest} UpdateEndpointRequest
                          */
-                        UpdateEndpointRequest.fromObject = function fromObject(object) {
+                        UpdateEndpointRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.UpdateEndpointRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.UpdateEndpointRequest();
                             if (object.endpoint != null) {
                                 if (typeof object.endpoint !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.UpdateEndpointRequest.endpoint: object expected");
-                                message.endpoint = $root.google.cloud.servicedirectory.v1.Endpoint.fromObject(object.endpoint);
+                                message.endpoint = $root.google.cloud.servicedirectory.v1.Endpoint.fromObject(object.endpoint, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1.UpdateEndpointRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -6380,7 +6668,7 @@
                         function DeleteEndpointRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6445,9 +6733,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteEndpointRequest.decode = function decode(reader, length, error) {
+                        DeleteEndpointRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1.DeleteEndpointRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6459,7 +6751,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -6490,9 +6782,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteEndpointRequest.verify = function verify(message) {
+                        DeleteEndpointRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -6507,9 +6803,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1.DeleteEndpointRequest} DeleteEndpointRequest
                          */
-                        DeleteEndpointRequest.fromObject = function fromObject(object) {
+                        DeleteEndpointRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1.DeleteEndpointRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1.DeleteEndpointRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -6605,7 +6905,7 @@
                             this.metadata = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -6741,9 +7041,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Endpoint.decode = function decode(reader, length, error) {
+                        Endpoint.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.Endpoint(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -6778,10 +7082,12 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.metadata, key);
                                         message.metadata[key] = value;
                                         break;
                                     }
@@ -6790,11 +7096,11 @@
                                         break;
                                     }
                                 case 6: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
@@ -6802,7 +7108,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -6833,9 +7139,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Endpoint.verify = function verify(message) {
+                        Endpoint.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -6857,12 +7167,12 @@
                                 if (!$util.isString(message.network))
                                     return "network: string expected";
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -6880,9 +7190,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.Endpoint} Endpoint
                          */
-                        Endpoint.fromObject = function fromObject(object) {
+                        Endpoint.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.Endpoint)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.Endpoint();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -6894,20 +7208,23 @@
                                 if (typeof object.metadata !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.Endpoint.metadata: object expected");
                                 message.metadata = {};
-                                for (var keys = Object.keys(object.metadata), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.metadata), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.metadata, keys[i]);
                                     message.metadata[keys[i]] = String(object.metadata[keys[i]]);
+                                }
                             }
                             if (object.network != null)
                                 message.network = String(object.network);
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.Endpoint.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.Endpoint.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.uid != null)
                                 message.uid = String(object.uid);
@@ -6947,8 +7264,11 @@
                             var keys2;
                             if (message.metadata && (keys2 = Object.keys(message.metadata)).length) {
                                 object.metadata = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.metadata, keys2[j]);
                                     object.metadata[keys2[j]] = message.metadata[keys2[j]];
+                                }
                             }
                             if (message.network != null && message.hasOwnProperty("network"))
                                 object.network = message.network;
@@ -7080,7 +7400,7 @@
                         function ResolveServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -7165,9 +7485,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResolveServiceRequest.decode = function decode(reader, length, error) {
+                        ResolveServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -7187,7 +7511,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -7218,9 +7542,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResolveServiceRequest.verify = function verify(message) {
+                        ResolveServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -7241,9 +7569,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.ResolveServiceRequest} ResolveServiceRequest
                          */
-                        ResolveServiceRequest.fromObject = function fromObject(object) {
+                        ResolveServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -7330,7 +7662,7 @@
                         function ResolveServiceResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -7395,9 +7727,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ResolveServiceResponse.decode = function decode(reader, length, error) {
+                        ResolveServiceResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.ResolveServiceResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -7405,11 +7741,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.service = $root.google.cloud.servicedirectory.v1beta1.Service.decode(reader, reader.uint32());
+                                        message.service = $root.google.cloud.servicedirectory.v1beta1.Service.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -7440,11 +7776,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ResolveServiceResponse.verify = function verify(message) {
+                        ResolveServiceResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.service != null && message.hasOwnProperty("service")) {
-                                var error = $root.google.cloud.servicedirectory.v1beta1.Service.verify(message.service);
+                                var error = $root.google.cloud.servicedirectory.v1beta1.Service.verify(message.service, long + 1);
                                 if (error)
                                     return "service." + error;
                             }
@@ -7459,14 +7799,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.ResolveServiceResponse} ResolveServiceResponse
                          */
-                        ResolveServiceResponse.fromObject = function fromObject(object) {
+                        ResolveServiceResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.ResolveServiceResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.ResolveServiceResponse();
                             if (object.service != null) {
                                 if (typeof object.service !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.ResolveServiceResponse.service: object expected");
-                                message.service = $root.google.cloud.servicedirectory.v1beta1.Service.fromObject(object.service);
+                                message.service = $root.google.cloud.servicedirectory.v1beta1.Service.fromObject(object.service, long + 1);
                             }
                             return message;
                         };
@@ -7547,7 +7891,7 @@
                             this.endpoints = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -7664,9 +8008,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Service.decode = function decode(reader, length, error) {
+                        Service.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.Service(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -7693,25 +8041,27 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.metadata, key);
                                         message.metadata[key] = value;
                                         break;
                                     }
                                 case 3: {
                                         if (!(message.endpoints && message.endpoints.length))
                                             message.endpoints = [];
-                                        message.endpoints.push($root.google.cloud.servicedirectory.v1beta1.Endpoint.decode(reader, reader.uint32()));
+                                        message.endpoints.push($root.google.cloud.servicedirectory.v1beta1.Endpoint.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 6: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 7: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 8: {
@@ -7719,7 +8069,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -7750,9 +8100,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Service.verify = function verify(message) {
+                        Service.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -7768,18 +8122,18 @@
                                 if (!Array.isArray(message.endpoints))
                                     return "endpoints: array expected";
                                 for (var i = 0; i < message.endpoints.length; ++i) {
-                                    var error = $root.google.cloud.servicedirectory.v1beta1.Endpoint.verify(message.endpoints[i]);
+                                    var error = $root.google.cloud.servicedirectory.v1beta1.Endpoint.verify(message.endpoints[i], long + 1);
                                     if (error)
                                         return "endpoints." + error;
                                 }
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -7797,9 +8151,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.Service} Service
                          */
-                        Service.fromObject = function fromObject(object) {
+                        Service.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.Service)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.Service();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -7807,8 +8165,11 @@
                                 if (typeof object.metadata !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.Service.metadata: object expected");
                                 message.metadata = {};
-                                for (var keys = Object.keys(object.metadata), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.metadata), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.metadata, keys[i]);
                                     message.metadata[keys[i]] = String(object.metadata[keys[i]]);
+                                }
                             }
                             if (object.endpoints) {
                                 if (!Array.isArray(object.endpoints))
@@ -7817,18 +8178,18 @@
                                 for (var i = 0; i < object.endpoints.length; ++i) {
                                     if (typeof object.endpoints[i] !== "object")
                                         throw TypeError(".google.cloud.servicedirectory.v1beta1.Service.endpoints: object expected");
-                                    message.endpoints[i] = $root.google.cloud.servicedirectory.v1beta1.Endpoint.fromObject(object.endpoints[i]);
+                                    message.endpoints[i] = $root.google.cloud.servicedirectory.v1beta1.Endpoint.fromObject(object.endpoints[i], long + 1);
                                 }
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.Service.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.Service.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.uid != null)
                                 message.uid = String(object.uid);
@@ -7863,8 +8224,11 @@
                             var keys2;
                             if (message.metadata && (keys2 = Object.keys(message.metadata)).length) {
                                 object.metadata = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.metadata, keys2[j]);
                                     object.metadata[keys2[j]] = message.metadata[keys2[j]];
+                                }
                             }
                             if (message.endpoints && message.endpoints.length) {
                                 object.endpoints = [];
@@ -7934,7 +8298,7 @@
                             this.labels = {};
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8040,9 +8404,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Namespace.decode = function decode(reader, length, error) {
+                        Namespace.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.Namespace(), key, value;
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -8069,19 +8437,21 @@
                                                 value = reader.string();
                                                 break;
                                             default:
-                                                reader.skipType(tag2 & 7);
+                                                reader.skipType(tag2 & 7, long);
                                                 break;
                                             }
                                         }
+                                        if (key === "__proto__")
+                                            $util.makeProp(message.labels, key);
                                         message.labels[key] = value;
                                         break;
                                     }
                                 case 4: {
-                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.createTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 5: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 6: {
@@ -8089,7 +8459,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -8120,9 +8490,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Namespace.verify = function verify(message) {
+                        Namespace.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -8135,12 +8509,12 @@
                                         return "labels: string{k:string} expected";
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.createTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.createTime, long + 1);
                                 if (error)
                                     return "createTime." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -8158,9 +8532,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.Namespace} Namespace
                          */
-                        Namespace.fromObject = function fromObject(object) {
+                        Namespace.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.Namespace)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.Namespace();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -8168,18 +8546,21 @@
                                 if (typeof object.labels !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.Namespace.labels: object expected");
                                 message.labels = {};
-                                for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i)
+                                for (var keys = Object.keys(object.labels), i = 0; i < keys.length; ++i) {
+                                    if (keys[i] === "__proto__")
+                                        $util.makeProp(message.labels, keys[i]);
                                     message.labels[keys[i]] = String(object.labels[keys[i]]);
+                                }
                             }
                             if (object.createTime != null) {
                                 if (typeof object.createTime !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.Namespace.createTime: object expected");
-                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime);
+                                message.createTime = $root.google.protobuf.Timestamp.fromObject(object.createTime, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.Namespace.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.uid != null)
                                 message.uid = String(object.uid);
@@ -8212,8 +8593,11 @@
                             var keys2;
                             if (message.labels && (keys2 = Object.keys(message.labels)).length) {
                                 object.labels = {};
-                                for (var j = 0; j < keys2.length; ++j)
+                                for (var j = 0; j < keys2.length; ++j) {
+                                    if (keys2[j] === "__proto__")
+                                        $util.makeProp(object.labels, keys2[j]);
                                     object.labels[keys2[j]] = message.labels[keys2[j]];
+                                }
                             }
                             if (message.createTime != null && message.hasOwnProperty("createTime"))
                                 object.createTime = $root.google.protobuf.Timestamp.toObject(message.createTime, options);
@@ -8904,7 +9288,7 @@
                         function CreateNamespaceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -8989,9 +9373,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateNamespaceRequest.decode = function decode(reader, length, error) {
+                        CreateNamespaceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9007,11 +9395,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.namespace = $root.google.cloud.servicedirectory.v1beta1.Namespace.decode(reader, reader.uint32());
+                                        message.namespace = $root.google.cloud.servicedirectory.v1beta1.Namespace.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9042,9 +9430,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateNamespaceRequest.verify = function verify(message) {
+                        CreateNamespaceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -9052,7 +9444,7 @@
                                 if (!$util.isString(message.namespaceId))
                                     return "namespaceId: string expected";
                             if (message.namespace != null && message.hasOwnProperty("namespace")) {
-                                var error = $root.google.cloud.servicedirectory.v1beta1.Namespace.verify(message.namespace);
+                                var error = $root.google.cloud.servicedirectory.v1beta1.Namespace.verify(message.namespace, long + 1);
                                 if (error)
                                     return "namespace." + error;
                             }
@@ -9067,9 +9459,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest} CreateNamespaceRequest
                          */
-                        CreateNamespaceRequest.fromObject = function fromObject(object) {
+                        CreateNamespaceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -9078,7 +9474,7 @@
                             if (object.namespace != null) {
                                 if (typeof object.namespace !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest.namespace: object expected");
-                                message.namespace = $root.google.cloud.servicedirectory.v1beta1.Namespace.fromObject(object.namespace);
+                                message.namespace = $root.google.cloud.servicedirectory.v1beta1.Namespace.fromObject(object.namespace, long + 1);
                             }
                             return message;
                         };
@@ -9163,7 +9559,7 @@
                         function ListNamespacesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9268,9 +9664,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNamespacesRequest.decode = function decode(reader, length, error) {
+                        ListNamespacesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9298,7 +9698,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9329,9 +9729,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNamespacesRequest.verify = function verify(message) {
+                        ListNamespacesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -9358,9 +9762,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.ListNamespacesRequest} ListNamespacesRequest
                          */
-                        ListNamespacesRequest.fromObject = function fromObject(object) {
+                        ListNamespacesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -9459,7 +9867,7 @@
                             this.namespaces = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9535,9 +9943,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListNamespacesResponse.decode = function decode(reader, length, error) {
+                        ListNamespacesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.ListNamespacesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9547,7 +9959,7 @@
                                 case 1: {
                                         if (!(message.namespaces && message.namespaces.length))
                                             message.namespaces = [];
-                                        message.namespaces.push($root.google.cloud.servicedirectory.v1beta1.Namespace.decode(reader, reader.uint32()));
+                                        message.namespaces.push($root.google.cloud.servicedirectory.v1beta1.Namespace.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -9555,7 +9967,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9586,14 +9998,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListNamespacesResponse.verify = function verify(message) {
+                        ListNamespacesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.namespaces != null && message.hasOwnProperty("namespaces")) {
                                 if (!Array.isArray(message.namespaces))
                                     return "namespaces: array expected";
                                 for (var i = 0; i < message.namespaces.length; ++i) {
-                                    var error = $root.google.cloud.servicedirectory.v1beta1.Namespace.verify(message.namespaces[i]);
+                                    var error = $root.google.cloud.servicedirectory.v1beta1.Namespace.verify(message.namespaces[i], long + 1);
                                     if (error)
                                         return "namespaces." + error;
                                 }
@@ -9612,9 +10028,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.ListNamespacesResponse} ListNamespacesResponse
                          */
-                        ListNamespacesResponse.fromObject = function fromObject(object) {
+                        ListNamespacesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.ListNamespacesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.ListNamespacesResponse();
                             if (object.namespaces) {
                                 if (!Array.isArray(object.namespaces))
@@ -9623,7 +10043,7 @@
                                 for (var i = 0; i < object.namespaces.length; ++i) {
                                     if (typeof object.namespaces[i] !== "object")
                                         throw TypeError(".google.cloud.servicedirectory.v1beta1.ListNamespacesResponse.namespaces: object expected");
-                                    message.namespaces[i] = $root.google.cloud.servicedirectory.v1beta1.Namespace.fromObject(object.namespaces[i]);
+                                    message.namespaces[i] = $root.google.cloud.servicedirectory.v1beta1.Namespace.fromObject(object.namespaces[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -9707,7 +10127,7 @@
                         function GetNamespaceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9772,9 +10192,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetNamespaceRequest.decode = function decode(reader, length, error) {
+                        GetNamespaceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9786,7 +10210,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -9817,9 +10241,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetNamespaceRequest.verify = function verify(message) {
+                        GetNamespaceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -9834,9 +10262,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.GetNamespaceRequest} GetNamespaceRequest
                          */
-                        GetNamespaceRequest.fromObject = function fromObject(object) {
+                        GetNamespaceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -9913,7 +10345,7 @@
                         function UpdateNamespaceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -9988,9 +10420,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateNamespaceRequest.decode = function decode(reader, length, error) {
+                        UpdateNamespaceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -9998,15 +10434,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.namespace = $root.google.cloud.servicedirectory.v1beta1.Namespace.decode(reader, reader.uint32());
+                                        message.namespace = $root.google.cloud.servicedirectory.v1beta1.Namespace.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10037,16 +10473,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateNamespaceRequest.verify = function verify(message) {
+                        UpdateNamespaceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.namespace != null && message.hasOwnProperty("namespace")) {
-                                var error = $root.google.cloud.servicedirectory.v1beta1.Namespace.verify(message.namespace);
+                                var error = $root.google.cloud.servicedirectory.v1beta1.Namespace.verify(message.namespace, long + 1);
                                 if (error)
                                     return "namespace." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -10061,19 +10501,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest} UpdateNamespaceRequest
                          */
-                        UpdateNamespaceRequest.fromObject = function fromObject(object) {
+                        UpdateNamespaceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest();
                             if (object.namespace != null) {
                                 if (typeof object.namespace !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest.namespace: object expected");
-                                message.namespace = $root.google.cloud.servicedirectory.v1beta1.Namespace.fromObject(object.namespace);
+                                message.namespace = $root.google.cloud.servicedirectory.v1beta1.Namespace.fromObject(object.namespace, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -10151,7 +10595,7 @@
                         function DeleteNamespaceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10216,9 +10660,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteNamespaceRequest.decode = function decode(reader, length, error) {
+                        DeleteNamespaceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10230,7 +10678,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10261,9 +10709,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteNamespaceRequest.verify = function verify(message) {
+                        DeleteNamespaceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -10278,9 +10730,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest} DeleteNamespaceRequest
                          */
-                        DeleteNamespaceRequest.fromObject = function fromObject(object) {
+                        DeleteNamespaceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -10358,7 +10814,7 @@
                         function CreateServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10443,9 +10899,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateServiceRequest.decode = function decode(reader, length, error) {
+                        CreateServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.CreateServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10461,11 +10921,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.service = $root.google.cloud.servicedirectory.v1beta1.Service.decode(reader, reader.uint32());
+                                        message.service = $root.google.cloud.servicedirectory.v1beta1.Service.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10496,9 +10956,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateServiceRequest.verify = function verify(message) {
+                        CreateServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -10506,7 +10970,7 @@
                                 if (!$util.isString(message.serviceId))
                                     return "serviceId: string expected";
                             if (message.service != null && message.hasOwnProperty("service")) {
-                                var error = $root.google.cloud.servicedirectory.v1beta1.Service.verify(message.service);
+                                var error = $root.google.cloud.servicedirectory.v1beta1.Service.verify(message.service, long + 1);
                                 if (error)
                                     return "service." + error;
                             }
@@ -10521,9 +10985,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.CreateServiceRequest} CreateServiceRequest
                          */
-                        CreateServiceRequest.fromObject = function fromObject(object) {
+                        CreateServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.CreateServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.CreateServiceRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -10532,7 +11000,7 @@
                             if (object.service != null) {
                                 if (typeof object.service !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.CreateServiceRequest.service: object expected");
-                                message.service = $root.google.cloud.servicedirectory.v1beta1.Service.fromObject(object.service);
+                                message.service = $root.google.cloud.servicedirectory.v1beta1.Service.fromObject(object.service, long + 1);
                             }
                             return message;
                         };
@@ -10617,7 +11085,7 @@
                         function ListServicesRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10722,9 +11190,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListServicesRequest.decode = function decode(reader, length, error) {
+                        ListServicesRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.ListServicesRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -10752,7 +11224,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -10783,9 +11255,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListServicesRequest.verify = function verify(message) {
+                        ListServicesRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -10812,9 +11288,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.ListServicesRequest} ListServicesRequest
                          */
-                        ListServicesRequest.fromObject = function fromObject(object) {
+                        ListServicesRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.ListServicesRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.ListServicesRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -10913,7 +11393,7 @@
                             this.services = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -10989,9 +11469,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListServicesResponse.decode = function decode(reader, length, error) {
+                        ListServicesResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.ListServicesResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -11001,7 +11485,7 @@
                                 case 1: {
                                         if (!(message.services && message.services.length))
                                             message.services = [];
-                                        message.services.push($root.google.cloud.servicedirectory.v1beta1.Service.decode(reader, reader.uint32()));
+                                        message.services.push($root.google.cloud.servicedirectory.v1beta1.Service.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -11009,7 +11493,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -11040,14 +11524,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListServicesResponse.verify = function verify(message) {
+                        ListServicesResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.services != null && message.hasOwnProperty("services")) {
                                 if (!Array.isArray(message.services))
                                     return "services: array expected";
                                 for (var i = 0; i < message.services.length; ++i) {
-                                    var error = $root.google.cloud.servicedirectory.v1beta1.Service.verify(message.services[i]);
+                                    var error = $root.google.cloud.servicedirectory.v1beta1.Service.verify(message.services[i], long + 1);
                                     if (error)
                                         return "services." + error;
                                 }
@@ -11066,9 +11554,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.ListServicesResponse} ListServicesResponse
                          */
-                        ListServicesResponse.fromObject = function fromObject(object) {
+                        ListServicesResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.ListServicesResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.ListServicesResponse();
                             if (object.services) {
                                 if (!Array.isArray(object.services))
@@ -11077,7 +11569,7 @@
                                 for (var i = 0; i < object.services.length; ++i) {
                                     if (typeof object.services[i] !== "object")
                                         throw TypeError(".google.cloud.servicedirectory.v1beta1.ListServicesResponse.services: object expected");
-                                    message.services[i] = $root.google.cloud.servicedirectory.v1beta1.Service.fromObject(object.services[i]);
+                                    message.services[i] = $root.google.cloud.servicedirectory.v1beta1.Service.fromObject(object.services[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -11161,7 +11653,7 @@
                         function GetServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -11226,9 +11718,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetServiceRequest.decode = function decode(reader, length, error) {
+                        GetServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.GetServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -11240,7 +11736,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -11271,9 +11767,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetServiceRequest.verify = function verify(message) {
+                        GetServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -11288,9 +11788,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.GetServiceRequest} GetServiceRequest
                          */
-                        GetServiceRequest.fromObject = function fromObject(object) {
+                        GetServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.GetServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.GetServiceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -11367,7 +11871,7 @@
                         function UpdateServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -11442,9 +11946,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateServiceRequest.decode = function decode(reader, length, error) {
+                        UpdateServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -11452,15 +11960,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.service = $root.google.cloud.servicedirectory.v1beta1.Service.decode(reader, reader.uint32());
+                                        message.service = $root.google.cloud.servicedirectory.v1beta1.Service.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -11491,16 +11999,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateServiceRequest.verify = function verify(message) {
+                        UpdateServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.service != null && message.hasOwnProperty("service")) {
-                                var error = $root.google.cloud.servicedirectory.v1beta1.Service.verify(message.service);
+                                var error = $root.google.cloud.servicedirectory.v1beta1.Service.verify(message.service, long + 1);
                                 if (error)
                                     return "service." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -11515,19 +12027,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.UpdateServiceRequest} UpdateServiceRequest
                          */
-                        UpdateServiceRequest.fromObject = function fromObject(object) {
+                        UpdateServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest();
                             if (object.service != null) {
                                 if (typeof object.service !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.UpdateServiceRequest.service: object expected");
-                                message.service = $root.google.cloud.servicedirectory.v1beta1.Service.fromObject(object.service);
+                                message.service = $root.google.cloud.servicedirectory.v1beta1.Service.fromObject(object.service, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.UpdateServiceRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -11605,7 +12121,7 @@
                         function DeleteServiceRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -11670,9 +12186,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteServiceRequest.decode = function decode(reader, length, error) {
+                        DeleteServiceRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -11684,7 +12204,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -11715,9 +12235,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteServiceRequest.verify = function verify(message) {
+                        DeleteServiceRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -11732,9 +12256,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.DeleteServiceRequest} DeleteServiceRequest
                          */
-                        DeleteServiceRequest.fromObject = function fromObject(object) {
+                        DeleteServiceRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -11812,7 +12340,7 @@
                         function CreateEndpointRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -11897,9 +12425,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateEndpointRequest.decode = function decode(reader, length, error) {
+                        CreateEndpointRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -11915,11 +12447,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.endpoint = $root.google.cloud.servicedirectory.v1beta1.Endpoint.decode(reader, reader.uint32());
+                                        message.endpoint = $root.google.cloud.servicedirectory.v1beta1.Endpoint.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -11950,9 +12482,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateEndpointRequest.verify = function verify(message) {
+                        CreateEndpointRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -11960,7 +12496,7 @@
                                 if (!$util.isString(message.endpointId))
                                     return "endpointId: string expected";
                             if (message.endpoint != null && message.hasOwnProperty("endpoint")) {
-                                var error = $root.google.cloud.servicedirectory.v1beta1.Endpoint.verify(message.endpoint);
+                                var error = $root.google.cloud.servicedirectory.v1beta1.Endpoint.verify(message.endpoint, long + 1);
                                 if (error)
                                     return "endpoint." + error;
                             }
@@ -11975,9 +12511,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.CreateEndpointRequest} CreateEndpointRequest
                          */
-                        CreateEndpointRequest.fromObject = function fromObject(object) {
+                        CreateEndpointRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -11986,7 +12526,7 @@
                             if (object.endpoint != null) {
                                 if (typeof object.endpoint !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.CreateEndpointRequest.endpoint: object expected");
-                                message.endpoint = $root.google.cloud.servicedirectory.v1beta1.Endpoint.fromObject(object.endpoint);
+                                message.endpoint = $root.google.cloud.servicedirectory.v1beta1.Endpoint.fromObject(object.endpoint, long + 1);
                             }
                             return message;
                         };
@@ -12071,7 +12611,7 @@
                         function ListEndpointsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12176,9 +12716,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEndpointsRequest.decode = function decode(reader, length, error) {
+                        ListEndpointsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12206,7 +12750,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12237,9 +12781,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEndpointsRequest.verify = function verify(message) {
+                        ListEndpointsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -12266,9 +12814,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.ListEndpointsRequest} ListEndpointsRequest
                          */
-                        ListEndpointsRequest.fromObject = function fromObject(object) {
+                        ListEndpointsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -12367,7 +12919,7 @@
                             this.endpoints = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12443,9 +12995,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEndpointsResponse.decode = function decode(reader, length, error) {
+                        ListEndpointsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.ListEndpointsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12455,7 +13011,7 @@
                                 case 1: {
                                         if (!(message.endpoints && message.endpoints.length))
                                             message.endpoints = [];
-                                        message.endpoints.push($root.google.cloud.servicedirectory.v1beta1.Endpoint.decode(reader, reader.uint32()));
+                                        message.endpoints.push($root.google.cloud.servicedirectory.v1beta1.Endpoint.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -12463,7 +13019,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12494,14 +13050,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEndpointsResponse.verify = function verify(message) {
+                        ListEndpointsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.endpoints != null && message.hasOwnProperty("endpoints")) {
                                 if (!Array.isArray(message.endpoints))
                                     return "endpoints: array expected";
                                 for (var i = 0; i < message.endpoints.length; ++i) {
-                                    var error = $root.google.cloud.servicedirectory.v1beta1.Endpoint.verify(message.endpoints[i]);
+                                    var error = $root.google.cloud.servicedirectory.v1beta1.Endpoint.verify(message.endpoints[i], long + 1);
                                     if (error)
                                         return "endpoints." + error;
                                 }
@@ -12520,9 +13080,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.ListEndpointsResponse} ListEndpointsResponse
                          */
-                        ListEndpointsResponse.fromObject = function fromObject(object) {
+                        ListEndpointsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.ListEndpointsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.ListEndpointsResponse();
                             if (object.endpoints) {
                                 if (!Array.isArray(object.endpoints))
@@ -12531,7 +13095,7 @@
                                 for (var i = 0; i < object.endpoints.length; ++i) {
                                     if (typeof object.endpoints[i] !== "object")
                                         throw TypeError(".google.cloud.servicedirectory.v1beta1.ListEndpointsResponse.endpoints: object expected");
-                                    message.endpoints[i] = $root.google.cloud.servicedirectory.v1beta1.Endpoint.fromObject(object.endpoints[i]);
+                                    message.endpoints[i] = $root.google.cloud.servicedirectory.v1beta1.Endpoint.fromObject(object.endpoints[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -12615,7 +13179,7 @@
                         function GetEndpointRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12680,9 +13244,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEndpointRequest.decode = function decode(reader, length, error) {
+                        GetEndpointRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.GetEndpointRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12694,7 +13262,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12725,9 +13293,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEndpointRequest.verify = function verify(message) {
+                        GetEndpointRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -12742,9 +13314,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.GetEndpointRequest} GetEndpointRequest
                          */
-                        GetEndpointRequest.fromObject = function fromObject(object) {
+                        GetEndpointRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.GetEndpointRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.GetEndpointRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -12821,7 +13397,7 @@
                         function UpdateEndpointRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -12896,9 +13472,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        UpdateEndpointRequest.decode = function decode(reader, length, error) {
+                        UpdateEndpointRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -12906,15 +13486,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.endpoint = $root.google.cloud.servicedirectory.v1beta1.Endpoint.decode(reader, reader.uint32());
+                                        message.endpoint = $root.google.cloud.servicedirectory.v1beta1.Endpoint.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                        message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -12945,16 +13525,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        UpdateEndpointRequest.verify = function verify(message) {
+                        UpdateEndpointRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.endpoint != null && message.hasOwnProperty("endpoint")) {
-                                var error = $root.google.cloud.servicedirectory.v1beta1.Endpoint.verify(message.endpoint);
+                                var error = $root.google.cloud.servicedirectory.v1beta1.Endpoint.verify(message.endpoint, long + 1);
                                 if (error)
                                     return "endpoint." + error;
                             }
                             if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                                var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                                 if (error)
                                     return "updateMask." + error;
                             }
@@ -12969,19 +13553,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest} UpdateEndpointRequest
                          */
-                        UpdateEndpointRequest.fromObject = function fromObject(object) {
+                        UpdateEndpointRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest();
                             if (object.endpoint != null) {
                                 if (typeof object.endpoint !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest.endpoint: object expected");
-                                message.endpoint = $root.google.cloud.servicedirectory.v1beta1.Endpoint.fromObject(object.endpoint);
+                                message.endpoint = $root.google.cloud.servicedirectory.v1beta1.Endpoint.fromObject(object.endpoint, long + 1);
                             }
                             if (object.updateMask != null) {
                                 if (typeof object.updateMask !== "object")
                                     throw TypeError(".google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest.updateMask: object expected");
-                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                                message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                             }
                             return message;
                         };
@@ -13059,7 +13647,7 @@
                         function DeleteEndpointRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -13124,9 +13712,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteEndpointRequest.decode = function decode(reader, length, error) {
+                        DeleteEndpointRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -13138,7 +13730,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -13169,9 +13761,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteEndpointRequest.verify = function verify(message) {
+                        DeleteEndpointRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -13186,9 +13782,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest} DeleteEndpointRequest
                          */
-                        DeleteEndpointRequest.fromObject = function fromObject(object) {
+                        DeleteEndpointRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -13318,7 +13918,7 @@
                     this.style = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -13448,9 +14048,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceDescriptor.decode = function decode(reader, length, error) {
+                ResourceDescriptor.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceDescriptor();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -13495,7 +14099,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -13526,9 +14130,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceDescriptor.verify = function verify(message) {
+                ResourceDescriptor.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -13580,9 +14188,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceDescriptor} ResourceDescriptor
                  */
-                ResourceDescriptor.fromObject = function fromObject(object) {
+                ResourceDescriptor.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceDescriptor)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceDescriptor();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -13770,7 +14382,7 @@
                 function ResourceReference(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -13845,9 +14457,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceReference.decode = function decode(reader, length, error) {
+                ResourceReference.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceReference();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -13863,7 +14479,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -13894,9 +14510,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceReference.verify = function verify(message) {
+                ResourceReference.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -13914,9 +14534,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceReference} ResourceReference
                  */
-                ResourceReference.fromObject = function fromObject(object) {
+                ResourceReference.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceReference)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceReference();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -14000,7 +14624,7 @@
                     this.rules = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14076,9 +14700,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Http.decode = function decode(reader, length, error) {
+                Http.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14088,7 +14716,7 @@
                         case 1: {
                                 if (!(message.rules && message.rules.length))
                                     message.rules = [];
-                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
@@ -14096,7 +14724,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14127,14 +14755,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Http.verify = function verify(message) {
+                Http.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.rules != null && message.hasOwnProperty("rules")) {
                         if (!Array.isArray(message.rules))
                             return "rules: array expected";
                         for (var i = 0; i < message.rules.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.rules[i]);
+                            var error = $root.google.api.HttpRule.verify(message.rules[i], long + 1);
                             if (error)
                                 return "rules." + error;
                         }
@@ -14153,9 +14785,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Http} Http
                  */
-                Http.fromObject = function fromObject(object) {
+                Http.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Http)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Http();
                     if (object.rules) {
                         if (!Array.isArray(object.rules))
@@ -14164,7 +14800,7 @@
                         for (var i = 0; i < object.rules.length; ++i) {
                             if (typeof object.rules[i] !== "object")
                                 throw TypeError(".google.api.Http.rules: object expected");
-                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]);
+                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i], long + 1);
                         }
                     }
                     if (object.fullyDecodeReservedExpansion != null)
@@ -14258,7 +14894,7 @@
                     this.additionalBindings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14428,9 +15064,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                HttpRule.decode = function decode(reader, length, error) {
+                HttpRule.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14462,7 +15102,7 @@
                                 break;
                             }
                         case 8: {
-                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32());
+                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 7: {
@@ -14476,11 +15116,11 @@
                         case 11: {
                                 if (!(message.additionalBindings && message.additionalBindings.length))
                                     message.additionalBindings = [];
-                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14511,9 +15151,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                HttpRule.verify = function verify(message) {
+                HttpRule.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     var properties = {};
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
@@ -14556,7 +15200,7 @@
                             return "pattern: multiple values";
                         properties.pattern = 1;
                         {
-                            var error = $root.google.api.CustomHttpPattern.verify(message.custom);
+                            var error = $root.google.api.CustomHttpPattern.verify(message.custom, long + 1);
                             if (error)
                                 return "custom." + error;
                         }
@@ -14571,7 +15215,7 @@
                         if (!Array.isArray(message.additionalBindings))
                             return "additionalBindings: array expected";
                         for (var i = 0; i < message.additionalBindings.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]);
+                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i], long + 1);
                             if (error)
                                 return "additionalBindings." + error;
                         }
@@ -14587,9 +15231,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.HttpRule} HttpRule
                  */
-                HttpRule.fromObject = function fromObject(object) {
+                HttpRule.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.HttpRule)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.HttpRule();
                     if (object.selector != null)
                         message.selector = String(object.selector);
@@ -14606,7 +15254,7 @@
                     if (object.custom != null) {
                         if (typeof object.custom !== "object")
                             throw TypeError(".google.api.HttpRule.custom: object expected");
-                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom);
+                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom, long + 1);
                     }
                     if (object.body != null)
                         message.body = String(object.body);
@@ -14619,7 +15267,7 @@
                         for (var i = 0; i < object.additionalBindings.length; ++i) {
                             if (typeof object.additionalBindings[i] !== "object")
                                 throw TypeError(".google.api.HttpRule.additionalBindings: object expected");
-                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]);
+                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i], long + 1);
                         }
                     }
                     return message;
@@ -14739,7 +15387,7 @@
                 function CustomHttpPattern(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14814,9 +15462,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CustomHttpPattern.decode = function decode(reader, length, error) {
+                CustomHttpPattern.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14832,7 +15484,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14863,9 +15515,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CustomHttpPattern.verify = function verify(message) {
+                CustomHttpPattern.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.kind != null && message.hasOwnProperty("kind"))
                         if (!$util.isString(message.kind))
                             return "kind: string expected";
@@ -14883,9 +15539,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CustomHttpPattern} CustomHttpPattern
                  */
-                CustomHttpPattern.fromObject = function fromObject(object) {
+                CustomHttpPattern.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CustomHttpPattern)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CustomHttpPattern();
                     if (object.kind != null)
                         message.kind = String(object.kind);
@@ -14955,6 +15615,7 @@
                  * @interface ICommonLanguageSettings
                  * @property {string|null} [referenceDocsUri] CommonLanguageSettings referenceDocsUri
                  * @property {Array.<google.api.ClientLibraryDestination>|null} [destinations] CommonLanguageSettings destinations
+                 * @property {google.api.ISelectiveGapicGeneration|null} [selectiveGapicGeneration] CommonLanguageSettings selectiveGapicGeneration
                  */
     
                 /**
@@ -14969,7 +15630,7 @@
                     this.destinations = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14989,6 +15650,14 @@
                  */
                 CommonLanguageSettings.prototype.destinations = $util.emptyArray;
     
+                /**
+                 * CommonLanguageSettings selectiveGapicGeneration.
+                 * @member {google.api.ISelectiveGapicGeneration|null|undefined} selectiveGapicGeneration
+                 * @memberof google.api.CommonLanguageSettings
+                 * @instance
+                 */
+                CommonLanguageSettings.prototype.selectiveGapicGeneration = null;
+    
                 /**
                  * Creates a new CommonLanguageSettings instance using the specified properties.
                  * @function create
@@ -15021,6 +15690,8 @@
                             writer.int32(message.destinations[i]);
                         writer.ldelim();
                     }
+                    if (message.selectiveGapicGeneration != null && Object.hasOwnProperty.call(message, "selectiveGapicGeneration"))
+                        $root.google.api.SelectiveGapicGeneration.encode(message.selectiveGapicGeneration, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
                     return writer;
                 };
     
@@ -15048,9 +15719,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CommonLanguageSettings.decode = function decode(reader, length, error) {
+                CommonLanguageSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CommonLanguageSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15072,8 +15747,12 @@
                                     message.destinations.push(reader.int32());
                                 break;
                             }
+                        case 3: {
+                                message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -15104,9 +15783,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CommonLanguageSettings.verify = function verify(message) {
+                CommonLanguageSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
                         if (!$util.isString(message.referenceDocsUri))
                             return "referenceDocsUri: string expected";
@@ -15123,6 +15806,11 @@
                                 break;
                             }
                     }
+                    if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) {
+                        var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration, long + 1);
+                        if (error)
+                            return "selectiveGapicGeneration." + error;
+                    }
                     return null;
                 };
     
@@ -15134,9 +15822,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings
                  */
-                CommonLanguageSettings.fromObject = function fromObject(object) {
+                CommonLanguageSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CommonLanguageSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CommonLanguageSettings();
                     if (object.referenceDocsUri != null)
                         message.referenceDocsUri = String(object.referenceDocsUri);
@@ -15165,6 +15857,11 @@
                                 break;
                             }
                     }
+                    if (object.selectiveGapicGeneration != null) {
+                        if (typeof object.selectiveGapicGeneration !== "object")
+                            throw TypeError(".google.api.CommonLanguageSettings.selectiveGapicGeneration: object expected");
+                        message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration, long + 1);
+                    }
                     return message;
                 };
     
@@ -15183,8 +15880,10 @@
                     var object = {};
                     if (options.arrays || options.defaults)
                         object.destinations = [];
-                    if (options.defaults)
+                    if (options.defaults) {
                         object.referenceDocsUri = "";
+                        object.selectiveGapicGeneration = null;
+                    }
                     if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
                         object.referenceDocsUri = message.referenceDocsUri;
                     if (message.destinations && message.destinations.length) {
@@ -15192,6 +15891,8 @@
                         for (var j = 0; j < message.destinations.length; ++j)
                             object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] === undefined ? message.destinations[j] : $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j];
                     }
+                    if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration"))
+                        object.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.toObject(message.selectiveGapicGeneration, options);
                     return object;
                 };
     
@@ -15254,7 +15955,7 @@
                 function ClientLibrarySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -15419,9 +16120,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ClientLibrarySettings.decode = function decode(reader, length, error) {
+                ClientLibrarySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ClientLibrarySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15441,39 +16146,39 @@
                                 break;
                             }
                         case 21: {
-                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32());
+                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 22: {
-                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32());
+                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 23: {
-                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32());
+                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 24: {
-                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32());
+                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 25: {
-                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32());
+                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 26: {
-                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32());
+                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 27: {
-                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32());
+                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 28: {
-                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32());
+                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -15504,9 +16209,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ClientLibrarySettings.verify = function verify(message) {
+                ClientLibrarySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.version != null && message.hasOwnProperty("version"))
                         if (!$util.isString(message.version))
                             return "version: string expected";
@@ -15528,42 +16237,42 @@
                         if (typeof message.restNumericEnums !== "boolean")
                             return "restNumericEnums: boolean expected";
                     if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) {
-                        var error = $root.google.api.JavaSettings.verify(message.javaSettings);
+                        var error = $root.google.api.JavaSettings.verify(message.javaSettings, long + 1);
                         if (error)
                             return "javaSettings." + error;
                     }
                     if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) {
-                        var error = $root.google.api.CppSettings.verify(message.cppSettings);
+                        var error = $root.google.api.CppSettings.verify(message.cppSettings, long + 1);
                         if (error)
                             return "cppSettings." + error;
                     }
                     if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) {
-                        var error = $root.google.api.PhpSettings.verify(message.phpSettings);
+                        var error = $root.google.api.PhpSettings.verify(message.phpSettings, long + 1);
                         if (error)
                             return "phpSettings." + error;
                     }
                     if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) {
-                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings);
+                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings, long + 1);
                         if (error)
                             return "pythonSettings." + error;
                     }
                     if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) {
-                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings);
+                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings, long + 1);
                         if (error)
                             return "nodeSettings." + error;
                     }
                     if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) {
-                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings);
+                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings, long + 1);
                         if (error)
                             return "dotnetSettings." + error;
                     }
                     if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) {
-                        var error = $root.google.api.RubySettings.verify(message.rubySettings);
+                        var error = $root.google.api.RubySettings.verify(message.rubySettings, long + 1);
                         if (error)
                             return "rubySettings." + error;
                     }
                     if (message.goSettings != null && message.hasOwnProperty("goSettings")) {
-                        var error = $root.google.api.GoSettings.verify(message.goSettings);
+                        var error = $root.google.api.GoSettings.verify(message.goSettings, long + 1);
                         if (error)
                             return "goSettings." + error;
                     }
@@ -15578,9 +16287,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings
                  */
-                ClientLibrarySettings.fromObject = function fromObject(object) {
+                ClientLibrarySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ClientLibrarySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ClientLibrarySettings();
                     if (object.version != null)
                         message.version = String(object.version);
@@ -15629,42 +16342,42 @@
                     if (object.javaSettings != null) {
                         if (typeof object.javaSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.javaSettings: object expected");
-                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings);
+                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings, long + 1);
                     }
                     if (object.cppSettings != null) {
                         if (typeof object.cppSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.cppSettings: object expected");
-                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings);
+                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings, long + 1);
                     }
                     if (object.phpSettings != null) {
                         if (typeof object.phpSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.phpSettings: object expected");
-                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings);
+                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings, long + 1);
                     }
                     if (object.pythonSettings != null) {
                         if (typeof object.pythonSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.pythonSettings: object expected");
-                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings);
+                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings, long + 1);
                     }
                     if (object.nodeSettings != null) {
                         if (typeof object.nodeSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.nodeSettings: object expected");
-                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings);
+                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings, long + 1);
                     }
                     if (object.dotnetSettings != null) {
                         if (typeof object.dotnetSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.dotnetSettings: object expected");
-                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings);
+                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings, long + 1);
                     }
                     if (object.rubySettings != null) {
                         if (typeof object.rubySettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.rubySettings: object expected");
-                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings);
+                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings, long + 1);
                     }
                     if (object.goSettings != null) {
                         if (typeof object.goSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.goSettings: object expected");
-                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings);
+                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings, long + 1);
                     }
                     return message;
                 };
@@ -15782,7 +16495,7 @@
                     this.librarySettings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -15950,9 +16663,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Publishing.decode = function decode(reader, length, error) {
+                Publishing.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Publishing();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15962,7 +16679,7 @@
                         case 2: {
                                 if (!(message.methodSettings && message.methodSettings.length))
                                     message.methodSettings = [];
-                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32()));
+                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 101: {
@@ -15998,7 +16715,7 @@
                         case 109: {
                                 if (!(message.librarySettings && message.librarySettings.length))
                                     message.librarySettings = [];
-                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32()));
+                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 110: {
@@ -16010,7 +16727,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16041,14 +16758,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Publishing.verify = function verify(message) {
+                Publishing.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.methodSettings != null && message.hasOwnProperty("methodSettings")) {
                         if (!Array.isArray(message.methodSettings))
                             return "methodSettings: array expected";
                         for (var i = 0; i < message.methodSettings.length; ++i) {
-                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i]);
+                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i], long + 1);
                             if (error)
                                 return "methodSettings." + error;
                         }
@@ -16093,7 +16814,7 @@
                         if (!Array.isArray(message.librarySettings))
                             return "librarySettings: array expected";
                         for (var i = 0; i < message.librarySettings.length; ++i) {
-                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i]);
+                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i], long + 1);
                             if (error)
                                 return "librarySettings." + error;
                         }
@@ -16115,9 +16836,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Publishing} Publishing
                  */
-                Publishing.fromObject = function fromObject(object) {
+                Publishing.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Publishing)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Publishing();
                     if (object.methodSettings) {
                         if (!Array.isArray(object.methodSettings))
@@ -16126,7 +16851,7 @@
                         for (var i = 0; i < object.methodSettings.length; ++i) {
                             if (typeof object.methodSettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.methodSettings: object expected");
-                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i]);
+                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i], long + 1);
                         }
                     }
                     if (object.newIssueUri != null)
@@ -16193,7 +16918,7 @@
                         for (var i = 0; i < object.librarySettings.length; ++i) {
                             if (typeof object.librarySettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.librarySettings: object expected");
-                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i]);
+                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i], long + 1);
                         }
                     }
                     if (object.protoReferenceDocumentationUri != null)
@@ -16317,7 +17042,7 @@
                     this.serviceClassNames = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16403,9 +17128,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                JavaSettings.decode = function decode(reader, length, error) {
+                JavaSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.JavaSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16432,19 +17161,21 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.serviceClassNames, key);
                                 message.serviceClassNames[key] = value;
                                 break;
                             }
                         case 3: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16475,9 +17206,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                JavaSettings.verify = function verify(message) {
+                JavaSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage"))
                         if (!$util.isString(message.libraryPackage))
                             return "libraryPackage: string expected";
@@ -16490,7 +17225,7 @@
                                 return "serviceClassNames: string{k:string} expected";
                     }
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -16505,9 +17240,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.JavaSettings} JavaSettings
                  */
-                JavaSettings.fromObject = function fromObject(object) {
+                JavaSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.JavaSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.JavaSettings();
                     if (object.libraryPackage != null)
                         message.libraryPackage = String(object.libraryPackage);
@@ -16515,13 +17254,16 @@
                         if (typeof object.serviceClassNames !== "object")
                             throw TypeError(".google.api.JavaSettings.serviceClassNames: object expected");
                         message.serviceClassNames = {};
-                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.serviceClassNames, keys[i]);
                             message.serviceClassNames[keys[i]] = String(object.serviceClassNames[keys[i]]);
+                        }
                     }
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.JavaSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -16550,8 +17292,11 @@
                     var keys2;
                     if (message.serviceClassNames && (keys2 = Object.keys(message.serviceClassNames)).length) {
                         object.serviceClassNames = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.serviceClassNames, keys2[j]);
                             object.serviceClassNames[keys2[j]] = message.serviceClassNames[keys2[j]];
+                        }
                     }
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
@@ -16607,7 +17352,7 @@
                 function CppSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16672,9 +17417,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CppSettings.decode = function decode(reader, length, error) {
+                CppSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CppSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16682,11 +17431,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16717,11 +17466,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CppSettings.verify = function verify(message) {
+                CppSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -16736,14 +17489,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CppSettings} CppSettings
                  */
-                CppSettings.fromObject = function fromObject(object) {
+                CppSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CppSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CppSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.CppSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -16817,7 +17574,7 @@
                 function PhpSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16882,9 +17639,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PhpSettings.decode = function decode(reader, length, error) {
+                PhpSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PhpSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16892,11 +17653,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16927,11 +17688,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PhpSettings.verify = function verify(message) {
+                PhpSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -16946,14 +17711,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PhpSettings} PhpSettings
                  */
-                PhpSettings.fromObject = function fromObject(object) {
+                PhpSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PhpSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PhpSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PhpSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -17014,6 +17783,7 @@
                  * @memberof google.api
                  * @interface IPythonSettings
                  * @property {google.api.ICommonLanguageSettings|null} [common] PythonSettings common
+                 * @property {google.api.PythonSettings.IExperimentalFeatures|null} [experimentalFeatures] PythonSettings experimentalFeatures
                  */
     
                 /**
@@ -17027,7 +17797,7 @@
                 function PythonSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17039,6 +17809,14 @@
                  */
                 PythonSettings.prototype.common = null;
     
+                /**
+                 * PythonSettings experimentalFeatures.
+                 * @member {google.api.PythonSettings.IExperimentalFeatures|null|undefined} experimentalFeatures
+                 * @memberof google.api.PythonSettings
+                 * @instance
+                 */
+                PythonSettings.prototype.experimentalFeatures = null;
+    
                 /**
                  * Creates a new PythonSettings instance using the specified properties.
                  * @function create
@@ -17065,6 +17843,8 @@
                         writer = $Writer.create();
                     if (message.common != null && Object.hasOwnProperty.call(message, "common"))
                         $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.experimentalFeatures != null && Object.hasOwnProperty.call(message, "experimentalFeatures"))
+                        $root.google.api.PythonSettings.ExperimentalFeatures.encode(message.experimentalFeatures, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                     return writer;
                 };
     
@@ -17092,9 +17872,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PythonSettings.decode = function decode(reader, length, error) {
+                PythonSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17102,11 +17886,15 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
+                        case 2: {
+                                message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17137,14 +17925,23 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PythonSettings.verify = function verify(message) {
+                PythonSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
+                    if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) {
+                        var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures, long + 1);
+                        if (error)
+                            return "experimentalFeatures." + error;
+                    }
                     return null;
                 };
     
@@ -17156,14 +17953,23 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PythonSettings} PythonSettings
                  */
-                PythonSettings.fromObject = function fromObject(object) {
+                PythonSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PythonSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PythonSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PythonSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
+                    }
+                    if (object.experimentalFeatures != null) {
+                        if (typeof object.experimentalFeatures !== "object")
+                            throw TypeError(".google.api.PythonSettings.experimentalFeatures: object expected");
+                        message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures, long + 1);
                     }
                     return message;
                 };
@@ -17181,10 +17987,14 @@
                     if (!options)
                         options = {};
                     var object = {};
-                    if (options.defaults)
+                    if (options.defaults) {
                         object.common = null;
+                        object.experimentalFeatures = null;
+                    }
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures"))
+                        object.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.toObject(message.experimentalFeatures, options);
                     return object;
                 };
     
@@ -17214,6 +18024,270 @@
                     return typeUrlPrefix + "/google.api.PythonSettings";
                 };
     
+                PythonSettings.ExperimentalFeatures = (function() {
+    
+                    /**
+                     * Properties of an ExperimentalFeatures.
+                     * @memberof google.api.PythonSettings
+                     * @interface IExperimentalFeatures
+                     * @property {boolean|null} [restAsyncIoEnabled] ExperimentalFeatures restAsyncIoEnabled
+                     * @property {boolean|null} [protobufPythonicTypesEnabled] ExperimentalFeatures protobufPythonicTypesEnabled
+                     * @property {boolean|null} [unversionedPackageDisabled] ExperimentalFeatures unversionedPackageDisabled
+                     */
+    
+                    /**
+                     * Constructs a new ExperimentalFeatures.
+                     * @memberof google.api.PythonSettings
+                     * @classdesc Represents an ExperimentalFeatures.
+                     * @implements IExperimentalFeatures
+                     * @constructor
+                     * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set
+                     */
+                    function ExperimentalFeatures(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * ExperimentalFeatures restAsyncIoEnabled.
+                     * @member {boolean} restAsyncIoEnabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.restAsyncIoEnabled = false;
+    
+                    /**
+                     * ExperimentalFeatures protobufPythonicTypesEnabled.
+                     * @member {boolean} protobufPythonicTypesEnabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.protobufPythonicTypesEnabled = false;
+    
+                    /**
+                     * ExperimentalFeatures unversionedPackageDisabled.
+                     * @member {boolean} unversionedPackageDisabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.unversionedPackageDisabled = false;
+    
+                    /**
+                     * Creates a new ExperimentalFeatures instance using the specified properties.
+                     * @function create
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures instance
+                     */
+                    ExperimentalFeatures.create = function create(properties) {
+                        return new ExperimentalFeatures(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExperimentalFeatures.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.restAsyncIoEnabled != null && Object.hasOwnProperty.call(message, "restAsyncIoEnabled"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).bool(message.restAsyncIoEnabled);
+                        if (message.protobufPythonicTypesEnabled != null && Object.hasOwnProperty.call(message, "protobufPythonicTypesEnabled"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).bool(message.protobufPythonicTypesEnabled);
+                        if (message.unversionedPackageDisabled != null && Object.hasOwnProperty.call(message, "unversionedPackageDisabled"))
+                            writer.uint32(/* id 3, wireType 0 =*/24).bool(message.unversionedPackageDisabled);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExperimentalFeatures.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes an ExperimentalFeatures message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExperimentalFeatures.decode = function decode(reader, length, error, long) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings.ExperimentalFeatures();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.restAsyncIoEnabled = reader.bool();
+                                    break;
+                                }
+                            case 2: {
+                                    message.protobufPythonicTypesEnabled = reader.bool();
+                                    break;
+                                }
+                            case 3: {
+                                    message.unversionedPackageDisabled = reader.bool();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7, long);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExperimentalFeatures.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies an ExperimentalFeatures message.
+                     * @function verify
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    ExperimentalFeatures.verify = function verify(message, long) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
+                        if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
+                            if (typeof message.restAsyncIoEnabled !== "boolean")
+                                return "restAsyncIoEnabled: boolean expected";
+                        if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled"))
+                            if (typeof message.protobufPythonicTypesEnabled !== "boolean")
+                                return "protobufPythonicTypesEnabled: boolean expected";
+                        if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled"))
+                            if (typeof message.unversionedPackageDisabled !== "boolean")
+                                return "unversionedPackageDisabled: boolean expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     */
+                    ExperimentalFeatures.fromObject = function fromObject(object, long) {
+                        if (object instanceof $root.google.api.PythonSettings.ExperimentalFeatures)
+                            return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var message = new $root.google.api.PythonSettings.ExperimentalFeatures();
+                        if (object.restAsyncIoEnabled != null)
+                            message.restAsyncIoEnabled = Boolean(object.restAsyncIoEnabled);
+                        if (object.protobufPythonicTypesEnabled != null)
+                            message.protobufPythonicTypesEnabled = Boolean(object.protobufPythonicTypesEnabled);
+                        if (object.unversionedPackageDisabled != null)
+                            message.unversionedPackageDisabled = Boolean(object.unversionedPackageDisabled);
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.ExperimentalFeatures} message ExperimentalFeatures
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    ExperimentalFeatures.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.restAsyncIoEnabled = false;
+                            object.protobufPythonicTypesEnabled = false;
+                            object.unversionedPackageDisabled = false;
+                        }
+                        if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
+                            object.restAsyncIoEnabled = message.restAsyncIoEnabled;
+                        if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled"))
+                            object.protobufPythonicTypesEnabled = message.protobufPythonicTypesEnabled;
+                        if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled"))
+                            object.unversionedPackageDisabled = message.unversionedPackageDisabled;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this ExperimentalFeatures to JSON.
+                     * @function toJSON
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    ExperimentalFeatures.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for ExperimentalFeatures
+                     * @function getTypeUrl
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    ExperimentalFeatures.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.api.PythonSettings.ExperimentalFeatures";
+                    };
+    
+                    return ExperimentalFeatures;
+                })();
+    
                 return PythonSettings;
             })();
     
@@ -17237,7 +18311,7 @@
                 function NodeSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17302,9 +18376,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                NodeSettings.decode = function decode(reader, length, error) {
+                NodeSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.NodeSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17312,11 +18390,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17347,11 +18425,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                NodeSettings.verify = function verify(message) {
+                NodeSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -17366,14 +18448,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.NodeSettings} NodeSettings
                  */
-                NodeSettings.fromObject = function fromObject(object) {
+                NodeSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.NodeSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.NodeSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.NodeSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -17457,7 +18543,7 @@
                     this.handwrittenSignatures = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17577,9 +18663,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DotnetSettings.decode = function decode(reader, length, error) {
+                DotnetSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17587,7 +18677,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 2: {
@@ -17606,10 +18696,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
                                 message.renamedServices[key] = value;
                                 break;
                             }
@@ -17629,10 +18721,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedResources, key);
                                 message.renamedResources[key] = value;
                                 break;
                             }
@@ -17655,7 +18749,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17686,11 +18780,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DotnetSettings.verify = function verify(message) {
+                DotnetSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -17742,28 +18840,38 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.DotnetSettings} DotnetSettings
                  */
-                DotnetSettings.fromObject = function fromObject(object) {
+                DotnetSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.DotnetSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.DotnetSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.DotnetSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     if (object.renamedServices) {
                         if (typeof object.renamedServices !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedServices: object expected");
                         message.renamedServices = {};
-                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
                             message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     if (object.renamedResources) {
                         if (typeof object.renamedResources !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedResources: object expected");
                         message.renamedResources = {};
-                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedResources, keys[i]);
                             message.renamedResources[keys[i]] = String(object.renamedResources[keys[i]]);
+                        }
                     }
                     if (object.ignoredResources) {
                         if (!Array.isArray(object.ignoredResources))
@@ -17818,13 +18926,19 @@
                     var keys2;
                     if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
                         object.renamedServices = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
                             object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
                     }
                     if (message.renamedResources && (keys2 = Object.keys(message.renamedResources)).length) {
                         object.renamedResources = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedResources, keys2[j]);
                             object.renamedResources[keys2[j]] = message.renamedResources[keys2[j]];
+                        }
                     }
                     if (message.ignoredResources && message.ignoredResources.length) {
                         object.ignoredResources = [];
@@ -17893,7 +19007,7 @@
                 function RubySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17958,9 +19072,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                RubySettings.decode = function decode(reader, length, error) {
+                RubySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RubySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17968,11 +19086,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -18003,11 +19121,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                RubySettings.verify = function verify(message) {
+                RubySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -18022,14 +19144,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.RubySettings} RubySettings
                  */
-                RubySettings.fromObject = function fromObject(object) {
+                RubySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.RubySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.RubySettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.RubySettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -18090,6 +19216,7 @@
                  * @memberof google.api
                  * @interface IGoSettings
                  * @property {google.api.ICommonLanguageSettings|null} [common] GoSettings common
+                 * @property {Object.<string,string>|null} [renamedServices] GoSettings renamedServices
                  */
     
                 /**
@@ -18101,9 +19228,10 @@
                  * @param {google.api.IGoSettings=} [properties] Properties to set
                  */
                 function GoSettings(properties) {
+                    this.renamedServices = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -18115,6 +19243,14 @@
                  */
                 GoSettings.prototype.common = null;
     
+                /**
+                 * GoSettings renamedServices.
+                 * @member {Object.<string,string>} renamedServices
+                 * @memberof google.api.GoSettings
+                 * @instance
+                 */
+                GoSettings.prototype.renamedServices = $util.emptyObject;
+    
                 /**
                  * Creates a new GoSettings instance using the specified properties.
                  * @function create
@@ -18141,6 +19277,9 @@
                         writer = $Writer.create();
                     if (message.common != null && Object.hasOwnProperty.call(message, "common"))
                         $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices"))
+                        for (var keys = Object.keys(message.renamedServices), i = 0; i < keys.length; ++i)
+                            writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedServices[keys[i]]).ldelim();
                     return writer;
                 };
     
@@ -18168,21 +19307,50 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GoSettings.decode = function decode(reader, length, error) {
+                GoSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
-                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings();
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
                         if (tag === error)
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
+                        case 2: {
+                                if (message.renamedServices === $util.emptyObject)
+                                    message.renamedServices = {};
+                                var end2 = reader.uint32() + reader.pos;
+                                key = "";
+                                value = "";
+                                while (reader.pos < end2) {
+                                    var tag2 = reader.uint32();
+                                    switch (tag2 >>> 3) {
+                                    case 1:
+                                        key = reader.string();
+                                        break;
+                                    case 2:
+                                        value = reader.string();
+                                        break;
+                                    default:
+                                        reader.skipType(tag2 & 7, long);
+                                        break;
+                                    }
+                                }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
+                                message.renamedServices[key] = value;
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -18213,14 +19381,26 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GoSettings.verify = function verify(message) {
+                GoSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
+                    if (message.renamedServices != null && message.hasOwnProperty("renamedServices")) {
+                        if (!$util.isObject(message.renamedServices))
+                            return "renamedServices: object expected";
+                        var key = Object.keys(message.renamedServices);
+                        for (var i = 0; i < key.length; ++i)
+                            if (!$util.isString(message.renamedServices[key[i]]))
+                                return "renamedServices: string{k:string} expected";
+                    }
                     return null;
                 };
     
@@ -18232,14 +19412,28 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.GoSettings} GoSettings
                  */
-                GoSettings.fromObject = function fromObject(object) {
+                GoSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.GoSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.GoSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.GoSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
+                    }
+                    if (object.renamedServices) {
+                        if (typeof object.renamedServices !== "object")
+                            throw TypeError(".google.api.GoSettings.renamedServices: object expected");
+                        message.renamedServices = {};
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
+                            message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     return message;
                 };
@@ -18257,10 +19451,21 @@
                     if (!options)
                         options = {};
                     var object = {};
+                    if (options.objects || options.defaults)
+                        object.renamedServices = {};
                     if (options.defaults)
                         object.common = null;
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    var keys2;
+                    if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
+                        object.renamedServices = {};
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
+                            object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
+                    }
                     return object;
                 };
     
@@ -18316,7 +19521,7 @@
                     this.autoPopulatedFields = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -18402,9 +19607,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodSettings.decode = function decode(reader, length, error) {
+                MethodSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -18416,7 +19625,7 @@
                                 break;
                             }
                         case 2: {
-                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32());
+                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -18426,7 +19635,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -18457,14 +19666,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodSettings.verify = function verify(message) {
+                MethodSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
                             return "selector: string expected";
                     if (message.longRunning != null && message.hasOwnProperty("longRunning")) {
-                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning);
+                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning, long + 1);
                         if (error)
                             return "longRunning." + error;
                     }
@@ -18486,16 +19699,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.MethodSettings} MethodSettings
                  */
-                MethodSettings.fromObject = function fromObject(object) {
+                MethodSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.MethodSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.MethodSettings();
                     if (object.selector != null)
                         message.selector = String(object.selector);
                     if (object.longRunning != null) {
                         if (typeof object.longRunning !== "object")
                             throw TypeError(".google.api.MethodSettings.longRunning: object expected");
-                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning);
+                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning, long + 1);
                     }
                     if (object.autoPopulatedFields) {
                         if (!Array.isArray(object.autoPopulatedFields))
@@ -18587,7 +19804,7 @@
                     function LongRunning(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -18682,9 +19899,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    LongRunning.decode = function decode(reader, length, error) {
+                    LongRunning.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings.LongRunning();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -18692,7 +19913,7 @@
                                 break;
                             switch (tag >>> 3) {
                             case 1: {
-                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 2: {
@@ -18700,15 +19921,15 @@
                                     break;
                                 }
                             case 3: {
-                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 4: {
-                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -18739,11 +19960,15 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    LongRunning.verify = function verify(message) {
+                    LongRunning.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay, long + 1);
                             if (error)
                                 return "initialPollDelay." + error;
                         }
@@ -18751,12 +19976,12 @@
                             if (typeof message.pollDelayMultiplier !== "number")
                                 return "pollDelayMultiplier: number expected";
                         if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay, long + 1);
                             if (error)
                                 return "maxPollDelay." + error;
                         }
                         if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) {
-                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout);
+                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout, long + 1);
                             if (error)
                                 return "totalPollTimeout." + error;
                         }
@@ -18771,26 +19996,30 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.api.MethodSettings.LongRunning} LongRunning
                      */
-                    LongRunning.fromObject = function fromObject(object) {
+                    LongRunning.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.api.MethodSettings.LongRunning)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.api.MethodSettings.LongRunning();
                         if (object.initialPollDelay != null) {
                             if (typeof object.initialPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.initialPollDelay: object expected");
-                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay);
+                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay, long + 1);
                         }
                         if (object.pollDelayMultiplier != null)
                             message.pollDelayMultiplier = Number(object.pollDelayMultiplier);
                         if (object.maxPollDelay != null) {
                             if (typeof object.maxPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.maxPollDelay: object expected");
-                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay);
+                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay, long + 1);
                         }
                         if (object.totalPollTimeout != null) {
                             if (typeof object.totalPollTimeout !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.totalPollTimeout: object expected");
-                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout);
+                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout, long + 1);
                         }
                         return message;
                     };
@@ -18899,6 +20128,263 @@
                 return values;
             })();
     
+            api.SelectiveGapicGeneration = (function() {
+    
+                /**
+                 * Properties of a SelectiveGapicGeneration.
+                 * @memberof google.api
+                 * @interface ISelectiveGapicGeneration
+                 * @property {Array.<string>|null} [methods] SelectiveGapicGeneration methods
+                 * @property {boolean|null} [generateOmittedAsInternal] SelectiveGapicGeneration generateOmittedAsInternal
+                 */
+    
+                /**
+                 * Constructs a new SelectiveGapicGeneration.
+                 * @memberof google.api
+                 * @classdesc Represents a SelectiveGapicGeneration.
+                 * @implements ISelectiveGapicGeneration
+                 * @constructor
+                 * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set
+                 */
+                function SelectiveGapicGeneration(properties) {
+                    this.methods = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * SelectiveGapicGeneration methods.
+                 * @member {Array.<string>} methods
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 */
+                SelectiveGapicGeneration.prototype.methods = $util.emptyArray;
+    
+                /**
+                 * SelectiveGapicGeneration generateOmittedAsInternal.
+                 * @member {boolean} generateOmittedAsInternal
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 */
+                SelectiveGapicGeneration.prototype.generateOmittedAsInternal = false;
+    
+                /**
+                 * Creates a new SelectiveGapicGeneration instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration instance
+                 */
+                SelectiveGapicGeneration.create = function create(properties) {
+                    return new SelectiveGapicGeneration(properties);
+                };
+    
+                /**
+                 * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SelectiveGapicGeneration.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.methods != null && message.methods.length)
+                        for (var i = 0; i < message.methods.length; ++i)
+                            writer.uint32(/* id 1, wireType 2 =*/10).string(message.methods[i]);
+                    if (message.generateOmittedAsInternal != null && Object.hasOwnProperty.call(message, "generateOmittedAsInternal"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).bool(message.generateOmittedAsInternal);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SelectiveGapicGeneration.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SelectiveGapicGeneration.decode = function decode(reader, length, error, long) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.SelectiveGapicGeneration();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                if (!(message.methods && message.methods.length))
+                                    message.methods = [];
+                                message.methods.push(reader.string());
+                                break;
+                            }
+                        case 2: {
+                                message.generateOmittedAsInternal = reader.bool();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7, long);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SelectiveGapicGeneration.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a SelectiveGapicGeneration message.
+                 * @function verify
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                SelectiveGapicGeneration.verify = function verify(message, long) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
+                    if (message.methods != null && message.hasOwnProperty("methods")) {
+                        if (!Array.isArray(message.methods))
+                            return "methods: array expected";
+                        for (var i = 0; i < message.methods.length; ++i)
+                            if (!$util.isString(message.methods[i]))
+                                return "methods: string[] expected";
+                    }
+                    if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal"))
+                        if (typeof message.generateOmittedAsInternal !== "boolean")
+                            return "generateOmittedAsInternal: boolean expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 */
+                SelectiveGapicGeneration.fromObject = function fromObject(object, long) {
+                    if (object instanceof $root.google.api.SelectiveGapicGeneration)
+                        return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
+                    var message = new $root.google.api.SelectiveGapicGeneration();
+                    if (object.methods) {
+                        if (!Array.isArray(object.methods))
+                            throw TypeError(".google.api.SelectiveGapicGeneration.methods: array expected");
+                        message.methods = [];
+                        for (var i = 0; i < object.methods.length; ++i)
+                            message.methods[i] = String(object.methods[i]);
+                    }
+                    if (object.generateOmittedAsInternal != null)
+                        message.generateOmittedAsInternal = Boolean(object.generateOmittedAsInternal);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.SelectiveGapicGeneration} message SelectiveGapicGeneration
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                SelectiveGapicGeneration.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.methods = [];
+                    if (options.defaults)
+                        object.generateOmittedAsInternal = false;
+                    if (message.methods && message.methods.length) {
+                        object.methods = [];
+                        for (var j = 0; j < message.methods.length; ++j)
+                            object.methods[j] = message.methods[j];
+                    }
+                    if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal"))
+                        object.generateOmittedAsInternal = message.generateOmittedAsInternal;
+                    return object;
+                };
+    
+                /**
+                 * Converts this SelectiveGapicGeneration to JSON.
+                 * @function toJSON
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                SelectiveGapicGeneration.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for SelectiveGapicGeneration
+                 * @function getTypeUrl
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                SelectiveGapicGeneration.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.SelectiveGapicGeneration";
+                };
+    
+                return SelectiveGapicGeneration;
+            })();
+    
             /**
              * LaunchStage enum.
              * @name google.api.LaunchStage
@@ -18958,7 +20444,7 @@
                     this.file = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -19024,9 +20510,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorSet.decode = function decode(reader, length, error) {
+                FileDescriptorSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -19036,11 +20526,11 @@
                         case 1: {
                                 if (!(message.file && message.file.length))
                                     message.file = [];
-                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32()));
+                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19071,14 +20561,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorSet.verify = function verify(message) {
+                FileDescriptorSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.file != null && message.hasOwnProperty("file")) {
                         if (!Array.isArray(message.file))
                             return "file: array expected";
                         for (var i = 0; i < message.file.length; ++i) {
-                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]);
+                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i], long + 1);
                             if (error)
                                 return "file." + error;
                         }
@@ -19094,9 +20588,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet
                  */
-                FileDescriptorSet.fromObject = function fromObject(object) {
+                FileDescriptorSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorSet();
                     if (object.file) {
                         if (!Array.isArray(object.file))
@@ -19105,7 +20603,7 @@
                         for (var i = 0; i < object.file.length; ++i) {
                             if (typeof object.file[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected");
-                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]);
+                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i], long + 1);
                         }
                     }
                     return message;
@@ -19168,6 +20666,7 @@
              * @name google.protobuf.Edition
              * @enum {number}
              * @property {number} EDITION_UNKNOWN=0 EDITION_UNKNOWN value
+             * @property {number} EDITION_LEGACY=900 EDITION_LEGACY value
              * @property {number} EDITION_PROTO2=998 EDITION_PROTO2 value
              * @property {number} EDITION_PROTO3=999 EDITION_PROTO3 value
              * @property {number} EDITION_2023=1000 EDITION_2023 value
@@ -19182,6 +20681,7 @@
             protobuf.Edition = (function() {
                 var valuesById = {}, values = Object.create(valuesById);
                 values[valuesById[0] = "EDITION_UNKNOWN"] = 0;
+                values[valuesById[900] = "EDITION_LEGACY"] = 900;
                 values[valuesById[998] = "EDITION_PROTO2"] = 998;
                 values[valuesById[999] = "EDITION_PROTO3"] = 999;
                 values[valuesById[1000] = "EDITION_2023"] = 1000;
@@ -19206,6 +20706,7 @@
                  * @property {Array.<string>|null} [dependency] FileDescriptorProto dependency
                  * @property {Array.<number>|null} [publicDependency] FileDescriptorProto publicDependency
                  * @property {Array.<number>|null} [weakDependency] FileDescriptorProto weakDependency
+                 * @property {Array.<string>|null} [optionDependency] FileDescriptorProto optionDependency
                  * @property {Array.<google.protobuf.IDescriptorProto>|null} [messageType] FileDescriptorProto messageType
                  * @property {Array.<google.protobuf.IEnumDescriptorProto>|null} [enumType] FileDescriptorProto enumType
                  * @property {Array.<google.protobuf.IServiceDescriptorProto>|null} [service] FileDescriptorProto service
@@ -19228,13 +20729,14 @@
                     this.dependency = [];
                     this.publicDependency = [];
                     this.weakDependency = [];
+                    this.optionDependency = [];
                     this.messageType = [];
                     this.enumType = [];
                     this.service = [];
                     this.extension = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -19278,6 +20780,14 @@
                  */
                 FileDescriptorProto.prototype.weakDependency = $util.emptyArray;
     
+                /**
+                 * FileDescriptorProto optionDependency.
+                 * @member {Array.<string>} optionDependency
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.optionDependency = $util.emptyArray;
+    
                 /**
                  * FileDescriptorProto messageType.
                  * @member {Array.<google.protobuf.IDescriptorProto>} messageType
@@ -19399,6 +20909,9 @@
                         writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax);
                     if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
                         writer.uint32(/* id 14, wireType 0 =*/112).int32(message.edition);
+                    if (message.optionDependency != null && message.optionDependency.length)
+                        for (var i = 0; i < message.optionDependency.length; ++i)
+                            writer.uint32(/* id 15, wireType 2 =*/122).string(message.optionDependency[i]);
                     return writer;
                 };
     
@@ -19426,9 +20939,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorProto.decode = function decode(reader, length, error) {
+                FileDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -19471,36 +20988,42 @@
                                     message.weakDependency.push(reader.int32());
                                 break;
                             }
+                        case 15: {
+                                if (!(message.optionDependency && message.optionDependency.length))
+                                    message.optionDependency = [];
+                                message.optionDependency.push(reader.string());
+                                break;
+                            }
                         case 4: {
                                 if (!(message.messageType && message.messageType.length))
                                     message.messageType = [];
-                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.service && message.service.length))
                                     message.service = [];
-                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32()));
+                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
-                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32());
+                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 12: {
@@ -19512,7 +21035,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19543,9 +21066,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorProto.verify = function verify(message) {
+                FileDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -19573,11 +21100,18 @@
                             if (!$util.isInteger(message.weakDependency[i]))
                                 return "weakDependency: integer[] expected";
                     }
+                    if (message.optionDependency != null && message.hasOwnProperty("optionDependency")) {
+                        if (!Array.isArray(message.optionDependency))
+                            return "optionDependency: array expected";
+                        for (var i = 0; i < message.optionDependency.length; ++i)
+                            if (!$util.isString(message.optionDependency[i]))
+                                return "optionDependency: string[] expected";
+                    }
                     if (message.messageType != null && message.hasOwnProperty("messageType")) {
                         if (!Array.isArray(message.messageType))
                             return "messageType: array expected";
                         for (var i = 0; i < message.messageType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i], long + 1);
                             if (error)
                                 return "messageType." + error;
                         }
@@ -19586,7 +21120,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -19595,7 +21129,7 @@
                         if (!Array.isArray(message.service))
                             return "service: array expected";
                         for (var i = 0; i < message.service.length; ++i) {
-                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]);
+                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i], long + 1);
                             if (error)
                                 return "service." + error;
                         }
@@ -19604,18 +21138,18 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FileOptions.verify(message.options);
+                        var error = $root.google.protobuf.FileOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
                     if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) {
-                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo);
+                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo, long + 1);
                         if (error)
                             return "sourceCodeInfo." + error;
                     }
@@ -19627,6 +21161,7 @@
                         default:
                             return "edition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -19650,9 +21185,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto
                  */
-                FileDescriptorProto.fromObject = function fromObject(object) {
+                FileDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -19679,6 +21218,13 @@
                         for (var i = 0; i < object.weakDependency.length; ++i)
                             message.weakDependency[i] = object.weakDependency[i] | 0;
                     }
+                    if (object.optionDependency) {
+                        if (!Array.isArray(object.optionDependency))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.optionDependency: array expected");
+                        message.optionDependency = [];
+                        for (var i = 0; i < object.optionDependency.length; ++i)
+                            message.optionDependency[i] = String(object.optionDependency[i]);
+                    }
                     if (object.messageType) {
                         if (!Array.isArray(object.messageType))
                             throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected");
@@ -19686,7 +21232,7 @@
                         for (var i = 0; i < object.messageType.length; ++i) {
                             if (typeof object.messageType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected");
-                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]);
+                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -19696,7 +21242,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.service) {
@@ -19706,7 +21252,7 @@
                         for (var i = 0; i < object.service.length; ++i) {
                             if (typeof object.service[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected");
-                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]);
+                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -19716,18 +21262,18 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options, long + 1);
                     }
                     if (object.sourceCodeInfo != null) {
                         if (typeof object.sourceCodeInfo !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected");
-                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo);
+                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo, long + 1);
                     }
                     if (object.syntax != null)
                         message.syntax = String(object.syntax);
@@ -19742,6 +21288,10 @@
                     case 0:
                         message.edition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.edition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.edition = 998;
@@ -19807,6 +21357,7 @@
                         object.extension = [];
                         object.publicDependency = [];
                         object.weakDependency = [];
+                        object.optionDependency = [];
                     }
                     if (options.defaults) {
                         object.name = "";
@@ -19863,6 +21414,11 @@
                         object.syntax = message.syntax;
                     if (message.edition != null && message.hasOwnProperty("edition"))
                         object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                    if (message.optionDependency && message.optionDependency.length) {
+                        object.optionDependency = [];
+                        for (var j = 0; j < message.optionDependency.length; ++j)
+                            object.optionDependency[j] = message.optionDependency[j];
+                    }
                     return object;
                 };
     
@@ -19911,6 +21467,7 @@
                  * @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options
                  * @property {Array.<google.protobuf.DescriptorProto.IReservedRange>|null} [reservedRange] DescriptorProto reservedRange
                  * @property {Array.<string>|null} [reservedName] DescriptorProto reservedName
+                 * @property {google.protobuf.SymbolVisibility|null} [visibility] DescriptorProto visibility
                  */
     
                 /**
@@ -19932,7 +21489,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -20016,6 +21573,14 @@
                  */
                 DescriptorProto.prototype.reservedName = $util.emptyArray;
     
+                /**
+                 * DescriptorProto visibility.
+                 * @member {google.protobuf.SymbolVisibility} visibility
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.visibility = 0;
+    
                 /**
                  * Creates a new DescriptorProto instance using the specified properties.
                  * @function create
@@ -20068,6 +21633,8 @@
                     if (message.reservedName != null && message.reservedName.length)
                         for (var i = 0; i < message.reservedName.length; ++i)
                             writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]);
+                    if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility"))
+                        writer.uint32(/* id 11, wireType 0 =*/88).int32(message.visibility);
                     return writer;
                 };
     
@@ -20095,9 +21662,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DescriptorProto.decode = function decode(reader, length, error) {
+                DescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -20111,47 +21682,47 @@
                         case 2: {
                                 if (!(message.field && message.field.length))
                                     message.field = [];
-                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
                                 if (!(message.nestedType && message.nestedType.length))
                                     message.nestedType = [];
-                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.extensionRange && message.extensionRange.length))
                                     message.extensionRange = [];
-                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32()));
+                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
                                 if (!(message.oneofDecl && message.oneofDecl.length))
                                     message.oneofDecl = [];
-                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32()));
+                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
-                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 10: {
@@ -20160,8 +21731,12 @@
                                 message.reservedName.push(reader.string());
                                 break;
                             }
+                        case 11: {
+                                message.visibility = reader.int32();
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -20192,9 +21767,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DescriptorProto.verify = function verify(message) {
+                DescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -20202,7 +21781,7 @@
                         if (!Array.isArray(message.field))
                             return "field: array expected";
                         for (var i = 0; i < message.field.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i], long + 1);
                             if (error)
                                 return "field." + error;
                         }
@@ -20211,7 +21790,7 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
@@ -20220,7 +21799,7 @@
                         if (!Array.isArray(message.nestedType))
                             return "nestedType: array expected";
                         for (var i = 0; i < message.nestedType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i], long + 1);
                             if (error)
                                 return "nestedType." + error;
                         }
@@ -20229,7 +21808,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -20238,7 +21817,7 @@
                         if (!Array.isArray(message.extensionRange))
                             return "extensionRange: array expected";
                         for (var i = 0; i < message.extensionRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i], long + 1);
                             if (error)
                                 return "extensionRange." + error;
                         }
@@ -20247,13 +21826,13 @@
                         if (!Array.isArray(message.oneofDecl))
                             return "oneofDecl: array expected";
                         for (var i = 0; i < message.oneofDecl.length; ++i) {
-                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]);
+                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i], long + 1);
                             if (error)
                                 return "oneofDecl." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MessageOptions.verify(message.options);
+                        var error = $root.google.protobuf.MessageOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -20261,7 +21840,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -20273,6 +21852,15 @@
                             if (!$util.isString(message.reservedName[i]))
                                 return "reservedName: string[] expected";
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        switch (message.visibility) {
+                        default:
+                            return "visibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
                     return null;
                 };
     
@@ -20284,9 +21872,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.DescriptorProto} DescriptorProto
                  */
-                DescriptorProto.fromObject = function fromObject(object) {
+                DescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.DescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.DescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -20297,7 +21889,7 @@
                         for (var i = 0; i < object.field.length; ++i) {
                             if (typeof object.field[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.field: object expected");
-                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]);
+                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -20307,7 +21899,7 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.nestedType) {
@@ -20317,7 +21909,7 @@
                         for (var i = 0; i < object.nestedType.length; ++i) {
                             if (typeof object.nestedType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected");
-                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]);
+                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -20327,7 +21919,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.extensionRange) {
@@ -20337,7 +21929,7 @@
                         for (var i = 0; i < object.extensionRange.length; ++i) {
                             if (typeof object.extensionRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected");
-                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]);
+                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i], long + 1);
                         }
                     }
                     if (object.oneofDecl) {
@@ -20347,13 +21939,13 @@
                         for (var i = 0; i < object.oneofDecl.length; ++i) {
                             if (typeof object.oneofDecl[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected");
-                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]);
+                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.DescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -20362,7 +21954,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -20372,6 +21964,26 @@
                         for (var i = 0; i < object.reservedName.length; ++i)
                             message.reservedName[i] = String(object.reservedName[i]);
                     }
+                    switch (object.visibility) {
+                    default:
+                        if (typeof object.visibility === "number") {
+                            message.visibility = object.visibility;
+                            break;
+                        }
+                        break;
+                    case "VISIBILITY_UNSET":
+                    case 0:
+                        message.visibility = 0;
+                        break;
+                    case "VISIBILITY_LOCAL":
+                    case 1:
+                        message.visibility = 1;
+                        break;
+                    case "VISIBILITY_EXPORT":
+                    case 2:
+                        message.visibility = 2;
+                        break;
+                    }
                     return message;
                 };
     
@@ -20401,6 +22013,7 @@
                     if (options.defaults) {
                         object.name = "";
                         object.options = null;
+                        object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0;
                     }
                     if (message.name != null && message.hasOwnProperty("name"))
                         object.name = message.name;
@@ -20446,6 +22059,8 @@
                         for (var j = 0; j < message.reservedName.length; ++j)
                             object.reservedName[j] = message.reservedName[j];
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility;
                     return object;
                 };
     
@@ -20497,7 +22112,7 @@
                     function ExtensionRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -20582,9 +22197,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ExtensionRange.decode = function decode(reader, length, error) {
+                    ExtensionRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -20600,11 +22219,11 @@
                                     break;
                                 }
                             case 3: {
-                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32());
+                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -20635,9 +22254,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ExtensionRange.verify = function verify(message) {
+                    ExtensionRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -20645,7 +22268,7 @@
                             if (!$util.isInteger(message.end))
                                 return "end: integer expected";
                         if (message.options != null && message.hasOwnProperty("options")) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options, long + 1);
                             if (error)
                                 return "options." + error;
                         }
@@ -20660,9 +22283,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange
                      */
-                    ExtensionRange.fromObject = function fromObject(object) {
+                    ExtensionRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -20671,7 +22298,7 @@
                         if (object.options != null) {
                             if (typeof object.options !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected");
-                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options);
+                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options, long + 1);
                         }
                         return message;
                     };
@@ -20753,7 +22380,7 @@
                     function ReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -20828,9 +22455,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ReservedRange.decode = function decode(reader, length, error) {
+                    ReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -20846,7 +22477,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -20877,9 +22508,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ReservedRange.verify = function verify(message) {
+                    ReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -20897,9 +22532,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange
                      */
-                    ReservedRange.fromObject = function fromObject(object) {
+                    ReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -20989,7 +22628,7 @@
                     this.declaration = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -21086,9 +22725,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ExtensionRangeOptions.decode = function decode(reader, length, error) {
+                ExtensionRangeOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -21098,17 +22741,17 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
                                 if (!(message.declaration && message.declaration.length))
                                     message.declaration = [];
-                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32()));
+                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -21116,7 +22759,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -21147,14 +22790,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ExtensionRangeOptions.verify = function verify(message) {
+                ExtensionRangeOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -21163,13 +22810,13 @@
                         if (!Array.isArray(message.declaration))
                             return "declaration: array expected";
                         for (var i = 0; i < message.declaration.length; ++i) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i]);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i], long + 1);
                             if (error)
                                 return "declaration." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -21192,9 +22839,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions
                  */
-                ExtensionRangeOptions.fromObject = function fromObject(object) {
+                ExtensionRangeOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ExtensionRangeOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ExtensionRangeOptions();
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -21203,7 +22854,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object.declaration) {
@@ -21213,13 +22864,13 @@
                         for (var i = 0; i < object.declaration.length; ++i) {
                             if (typeof object.declaration[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: object expected");
-                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i]);
+                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ExtensionRangeOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     switch (object.verification) {
                     case "DECLARATION":
@@ -21328,7 +22979,7 @@
                     function Declaration(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -21433,9 +23084,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Declaration.decode = function decode(reader, length, error) {
+                    Declaration.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -21463,7 +23118,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -21494,9 +23149,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Declaration.verify = function verify(message) {
+                    Declaration.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.number != null && message.hasOwnProperty("number"))
                             if (!$util.isInteger(message.number))
                                 return "number: integer expected";
@@ -21523,9 +23182,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration
                      */
-                    Declaration.fromObject = function fromObject(object) {
+                    Declaration.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.ExtensionRangeOptions.Declaration)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         if (object.number != null)
                             message.number = object.number | 0;
@@ -21649,7 +23312,7 @@
                 function FieldDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -21814,9 +23477,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldDescriptorProto.decode = function decode(reader, length, error) {
+                FieldDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -21860,7 +23527,7 @@
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 17: {
@@ -21868,7 +23535,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -21899,9 +23566,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldDescriptorProto.verify = function verify(message) {
+                FieldDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -21957,7 +23628,7 @@
                         if (!$util.isString(message.jsonName))
                             return "jsonName: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FieldOptions.verify(message.options);
+                        var error = $root.google.protobuf.FieldOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -21975,9 +23646,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto
                  */
-                FieldDescriptorProto.fromObject = function fromObject(object) {
+                FieldDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -22096,7 +23771,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options, long + 1);
                     }
                     if (object.proto3Optional != null)
                         message.proto3Optional = Boolean(object.proto3Optional);
@@ -22266,7 +23941,7 @@
                 function OneofDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -22341,9 +24016,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofDescriptorProto.decode = function decode(reader, length, error) {
+                OneofDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -22355,11 +24034,11 @@
                                 break;
                             }
                         case 2: {
-                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -22390,14 +24069,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofDescriptorProto.verify = function verify(message) {
+                OneofDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.OneofOptions.verify(message.options);
+                        var error = $root.google.protobuf.OneofOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -22412,16 +24095,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto
                  */
-                OneofDescriptorProto.fromObject = function fromObject(object) {
+                OneofDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -22490,6 +24177,7 @@
                  * @property {google.protobuf.IEnumOptions|null} [options] EnumDescriptorProto options
                  * @property {Array.<google.protobuf.EnumDescriptorProto.IEnumReservedRange>|null} [reservedRange] EnumDescriptorProto reservedRange
                  * @property {Array.<string>|null} [reservedName] EnumDescriptorProto reservedName
+                 * @property {google.protobuf.SymbolVisibility|null} [visibility] EnumDescriptorProto visibility
                  */
     
                 /**
@@ -22506,7 +24194,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -22550,6 +24238,14 @@
                  */
                 EnumDescriptorProto.prototype.reservedName = $util.emptyArray;
     
+                /**
+                 * EnumDescriptorProto visibility.
+                 * @member {google.protobuf.SymbolVisibility} visibility
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 */
+                EnumDescriptorProto.prototype.visibility = 0;
+    
                 /**
                  * Creates a new EnumDescriptorProto instance using the specified properties.
                  * @function create
@@ -22587,6 +24283,8 @@
                     if (message.reservedName != null && message.reservedName.length)
                         for (var i = 0; i < message.reservedName.length; ++i)
                             writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]);
+                    if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility"))
+                        writer.uint32(/* id 6, wireType 0 =*/48).int32(message.visibility);
                     return writer;
                 };
     
@@ -22614,9 +24312,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumDescriptorProto.decode = function decode(reader, length, error) {
+                EnumDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -22630,17 +24332,17 @@
                         case 2: {
                                 if (!(message.value && message.value.length))
                                     message.value = [];
-                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32()));
+                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 4: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
@@ -22649,8 +24351,12 @@
                                 message.reservedName.push(reader.string());
                                 break;
                             }
+                        case 6: {
+                                message.visibility = reader.int32();
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -22681,9 +24387,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumDescriptorProto.verify = function verify(message) {
+                EnumDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -22691,13 +24401,13 @@
                         if (!Array.isArray(message.value))
                             return "value: array expected";
                         for (var i = 0; i < message.value.length; ++i) {
-                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]);
+                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i], long + 1);
                             if (error)
                                 return "value." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -22705,7 +24415,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -22717,6 +24427,15 @@
                             if (!$util.isString(message.reservedName[i]))
                                 return "reservedName: string[] expected";
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        switch (message.visibility) {
+                        default:
+                            return "visibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
                     return null;
                 };
     
@@ -22728,9 +24447,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto
                  */
-                EnumDescriptorProto.fromObject = function fromObject(object) {
+                EnumDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -22741,13 +24464,13 @@
                         for (var i = 0; i < object.value.length; ++i) {
                             if (typeof object.value[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected");
-                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]);
+                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -22756,7 +24479,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -22766,6 +24489,26 @@
                         for (var i = 0; i < object.reservedName.length; ++i)
                             message.reservedName[i] = String(object.reservedName[i]);
                     }
+                    switch (object.visibility) {
+                    default:
+                        if (typeof object.visibility === "number") {
+                            message.visibility = object.visibility;
+                            break;
+                        }
+                        break;
+                    case "VISIBILITY_UNSET":
+                    case 0:
+                        message.visibility = 0;
+                        break;
+                    case "VISIBILITY_LOCAL":
+                    case 1:
+                        message.visibility = 1;
+                        break;
+                    case "VISIBILITY_EXPORT":
+                    case 2:
+                        message.visibility = 2;
+                        break;
+                    }
                     return message;
                 };
     
@@ -22790,6 +24533,7 @@
                     if (options.defaults) {
                         object.name = "";
                         object.options = null;
+                        object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0;
                     }
                     if (message.name != null && message.hasOwnProperty("name"))
                         object.name = message.name;
@@ -22810,6 +24554,8 @@
                         for (var j = 0; j < message.reservedName.length; ++j)
                             object.reservedName[j] = message.reservedName[j];
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility;
                     return object;
                 };
     
@@ -22860,7 +24606,7 @@
                     function EnumReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -22935,9 +24681,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EnumReservedRange.decode = function decode(reader, length, error) {
+                    EnumReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -22953,7 +24703,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -22984,9 +24734,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EnumReservedRange.verify = function verify(message) {
+                    EnumReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -23004,9 +24758,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange
                      */
-                    EnumReservedRange.fromObject = function fromObject(object) {
+                    EnumReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -23093,7 +24851,7 @@
                 function EnumValueDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23178,9 +24936,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueDescriptorProto.decode = function decode(reader, length, error) {
+                EnumValueDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23196,11 +24958,11 @@
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23231,9 +24993,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueDescriptorProto.verify = function verify(message) {
+                EnumValueDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -23241,7 +25007,7 @@
                         if (!$util.isInteger(message.number))
                             return "number: integer expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -23256,9 +25022,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto
                  */
-                EnumValueDescriptorProto.fromObject = function fromObject(object) {
+                EnumValueDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -23267,7 +25037,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -23351,7 +25121,7 @@
                     this.method = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23437,9 +25207,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceDescriptorProto.decode = function decode(reader, length, error) {
+                ServiceDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23453,15 +25227,15 @@
                         case 2: {
                                 if (!(message.method && message.method.length))
                                     message.method = [];
-                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32()));
+                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23492,9 +25266,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceDescriptorProto.verify = function verify(message) {
+                ServiceDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -23502,13 +25280,13 @@
                         if (!Array.isArray(message.method))
                             return "method: array expected";
                         for (var i = 0; i < message.method.length; ++i) {
-                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]);
+                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i], long + 1);
                             if (error)
                                 return "method." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.ServiceOptions.verify(message.options);
+                        var error = $root.google.protobuf.ServiceOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -23523,9 +25301,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto
                  */
-                ServiceDescriptorProto.fromObject = function fromObject(object) {
+                ServiceDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -23536,13 +25318,13 @@
                         for (var i = 0; i < object.method.length; ++i) {
                             if (typeof object.method[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected");
-                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]);
+                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -23632,7 +25414,7 @@
                 function MethodDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23747,9 +25529,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodDescriptorProto.decode = function decode(reader, length, error) {
+                MethodDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23769,7 +25555,7 @@
                                 break;
                             }
                         case 4: {
-                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 5: {
@@ -23781,7 +25567,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23812,9 +25598,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodDescriptorProto.verify = function verify(message) {
+                MethodDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -23825,7 +25615,7 @@
                         if (!$util.isString(message.outputType))
                             return "outputType: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MethodOptions.verify(message.options);
+                        var error = $root.google.protobuf.MethodOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -23846,9 +25636,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto
                  */
-                MethodDescriptorProto.fromObject = function fromObject(object) {
+                MethodDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -23859,7 +25653,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options, long + 1);
                     }
                     if (object.clientStreaming != null)
                         message.clientStreaming = Boolean(object.clientStreaming);
@@ -23976,7 +25770,7 @@
                     this[".google.api.resourceDefinition"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -24253,9 +26047,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileOptions.decode = function decode(reader, length, error) {
+                FileOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -24339,23 +26137,23 @@
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
                                 if (!(message[".google.api.resourceDefinition"] && message[".google.api.resourceDefinition"].length))
                                     message[".google.api.resourceDefinition"] = [];
-                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32()));
+                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -24386,9 +26184,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileOptions.verify = function verify(message) {
+                FileOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.javaPackage != null && message.hasOwnProperty("javaPackage"))
                         if (!$util.isString(message.javaPackage))
                             return "javaPackage: string expected";
@@ -24453,7 +26255,7 @@
                         if (!$util.isString(message.rubyPackage))
                             return "rubyPackage: string expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -24461,7 +26263,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -24470,7 +26272,7 @@
                         if (!Array.isArray(message[".google.api.resourceDefinition"]))
                             return ".google.api.resourceDefinition: array expected";
                         for (var i = 0; i < message[".google.api.resourceDefinition"].length; ++i) {
-                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i]);
+                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i], long + 1);
                             if (error)
                                 return ".google.api.resourceDefinition." + error;
                         }
@@ -24486,9 +26288,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileOptions} FileOptions
                  */
-                FileOptions.fromObject = function fromObject(object) {
+                FileOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileOptions();
                     if (object.javaPackage != null)
                         message.javaPackage = String(object.javaPackage);
@@ -24549,7 +26355,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FileOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -24558,7 +26364,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resourceDefinition"]) {
@@ -24568,7 +26374,7 @@
                         for (var i = 0; i < object[".google.api.resourceDefinition"].length; ++i) {
                             if (typeof object[".google.api.resourceDefinition"][i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions..google.api.resourceDefinition: object expected");
-                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i]);
+                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i], long + 1);
                         }
                     }
                     return message;
@@ -24739,7 +26545,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -24875,9 +26681,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MessageOptions.decode = function decode(reader, length, error) {
+                MessageOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -24905,21 +26715,21 @@
                                 break;
                             }
                         case 12: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
-                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32());
+                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -24950,9 +26760,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MessageOptions.verify = function verify(message) {
+                MessageOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat"))
                         if (typeof message.messageSetWireFormat !== "boolean")
                             return "messageSetWireFormat: boolean expected";
@@ -24969,7 +26783,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -24977,13 +26791,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.resource"] != null && message.hasOwnProperty(".google.api.resource")) {
-                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"]);
+                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"], long + 1);
                         if (error)
                             return ".google.api.resource." + error;
                     }
@@ -24998,9 +26812,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MessageOptions} MessageOptions
                  */
-                MessageOptions.fromObject = function fromObject(object) {
+                MessageOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MessageOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MessageOptions();
                     if (object.messageSetWireFormat != null)
                         message.messageSetWireFormat = Boolean(object.messageSetWireFormat);
@@ -25015,7 +26833,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MessageOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -25024,13 +26842,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resource"] != null) {
                         if (typeof object[".google.api.resource"] !== "object")
                             throw TypeError(".google.protobuf.MessageOptions..google.api.resource: object expected");
-                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"]);
+                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"], long + 1);
                     }
                     return message;
                 };
@@ -25128,6 +26946,7 @@
                  * @property {Array.<google.protobuf.FieldOptions.OptionTargetType>|null} [targets] FieldOptions targets
                  * @property {Array.<google.protobuf.FieldOptions.IEditionDefault>|null} [editionDefaults] FieldOptions editionDefaults
                  * @property {google.protobuf.IFeatureSet|null} [features] FieldOptions features
+                 * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] FieldOptions featureSupport
                  * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] FieldOptions uninterpretedOption
                  * @property {Array.<google.api.FieldBehavior>|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior
                  * @property {google.api.IResourceReference|null} [".google.api.resourceReference"] FieldOptions .google.api.resourceReference
@@ -25148,7 +26967,7 @@
                     this[".google.api.fieldBehavior"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -25248,6 +27067,14 @@
                  */
                 FieldOptions.prototype.features = null;
     
+                /**
+                 * FieldOptions featureSupport.
+                 * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.featureSupport = null;
+    
                 /**
                  * FieldOptions uninterpretedOption.
                  * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
@@ -25322,6 +27149,8 @@
                             $root.google.protobuf.FieldOptions.EditionDefault.encode(message.editionDefaults[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();
                     if (message.features != null && Object.hasOwnProperty.call(message, "features"))
                         $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();
+                    if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport"))
+                        $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();
                     if (message.uninterpretedOption != null && message.uninterpretedOption.length)
                         for (var i = 0; i < message.uninterpretedOption.length; ++i)
                             $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
@@ -25357,9 +27186,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldOptions.decode = function decode(reader, length, error) {
+                FieldOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -25416,17 +27249,21 @@
                         case 20: {
                                 if (!(message.editionDefaults && message.editionDefaults.length))
                                     message.editionDefaults = [];
-                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32()));
+                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 21: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
+                        case 22: {
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1052: {
@@ -25441,11 +27278,11 @@
                                 break;
                             }
                         case 1055: {
-                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32());
+                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -25476,9 +27313,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldOptions.verify = function verify(message) {
+                FieldOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
                         switch (message.ctype) {
                         default:
@@ -25548,21 +27389,26 @@
                         if (!Array.isArray(message.editionDefaults))
                             return "editionDefaults: array expected";
                         for (var i = 0; i < message.editionDefaults.length; ++i) {
-                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i]);
+                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i], long + 1);
                             if (error)
                                 return "editionDefaults." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
+                        if (error)
+                            return "featureSupport." + error;
+                    }
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -25587,7 +27433,7 @@
                             }
                     }
                     if (message[".google.api.resourceReference"] != null && message.hasOwnProperty(".google.api.resourceReference")) {
-                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"]);
+                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"], long + 1);
                         if (error)
                             return ".google.api.resourceReference." + error;
                     }
@@ -25602,9 +27448,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldOptions} FieldOptions
                  */
-                FieldOptions.fromObject = function fromObject(object) {
+                FieldOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldOptions();
                     switch (object.ctype) {
                     default:
@@ -25738,13 +27588,18 @@
                         for (var i = 0; i < object.editionDefaults.length; ++i) {
                             if (typeof object.editionDefaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.editionDefaults: object expected");
-                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i]);
+                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FieldOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
+                    }
+                    if (object.featureSupport != null) {
+                        if (typeof object.featureSupport !== "object")
+                            throw TypeError(".google.protobuf.FieldOptions.featureSupport: object expected");
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -25753,7 +27608,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.fieldBehavior"]) {
@@ -25808,7 +27663,7 @@
                     if (object[".google.api.resourceReference"] != null) {
                         if (typeof object[".google.api.resourceReference"] !== "object")
                             throw TypeError(".google.protobuf.FieldOptions..google.api.resourceReference: object expected");
-                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"]);
+                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"], long + 1);
                     }
                     return message;
                 };
@@ -25843,6 +27698,7 @@
                         object.debugRedact = false;
                         object.retention = options.enums === String ? "RETENTION_UNKNOWN" : 0;
                         object.features = null;
+                        object.featureSupport = null;
                         object[".google.api.resourceReference"] = null;
                     }
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
@@ -25875,6 +27731,8 @@
                     }
                     if (message.features != null && message.hasOwnProperty("features"))
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport"))
+                        object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
                         object.uninterpretedOption = [];
                         for (var j = 0; j < message.uninterpretedOption.length; ++j)
@@ -26015,7 +27873,7 @@
                     function EditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -26090,9 +27948,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EditionDefault.decode = function decode(reader, length, error) {
+                    EditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -26108,7 +27970,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -26139,14 +28001,19 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EditionDefault.verify = function verify(message) {
+                    EditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
                                 return "edition: enum value expected";
                             case 0:
+                            case 900:
                             case 998:
                             case 999:
                             case 1000:
@@ -26173,9 +28040,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault
                      */
-                    EditionDefault.fromObject = function fromObject(object) {
+                    EditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         switch (object.edition) {
                         default:
@@ -26188,6 +28059,10 @@
                         case 0:
                             message.edition = 0;
                             break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.edition = 900;
+                            break;
                         case "EDITION_PROTO2":
                         case 998:
                             message.edition = 998;
@@ -26287,6 +28162,500 @@
                     return EditionDefault;
                 })();
     
+                FieldOptions.FeatureSupport = (function() {
+    
+                    /**
+                     * Properties of a FeatureSupport.
+                     * @memberof google.protobuf.FieldOptions
+                     * @interface IFeatureSupport
+                     * @property {google.protobuf.Edition|null} [editionIntroduced] FeatureSupport editionIntroduced
+                     * @property {google.protobuf.Edition|null} [editionDeprecated] FeatureSupport editionDeprecated
+                     * @property {string|null} [deprecationWarning] FeatureSupport deprecationWarning
+                     * @property {google.protobuf.Edition|null} [editionRemoved] FeatureSupport editionRemoved
+                     */
+    
+                    /**
+                     * Constructs a new FeatureSupport.
+                     * @memberof google.protobuf.FieldOptions
+                     * @classdesc Represents a FeatureSupport.
+                     * @implements IFeatureSupport
+                     * @constructor
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set
+                     */
+                    function FeatureSupport(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * FeatureSupport editionIntroduced.
+                     * @member {google.protobuf.Edition} editionIntroduced
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionIntroduced = 0;
+    
+                    /**
+                     * FeatureSupport editionDeprecated.
+                     * @member {google.protobuf.Edition} editionDeprecated
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionDeprecated = 0;
+    
+                    /**
+                     * FeatureSupport deprecationWarning.
+                     * @member {string} deprecationWarning
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.deprecationWarning = "";
+    
+                    /**
+                     * FeatureSupport editionRemoved.
+                     * @member {google.protobuf.Edition} editionRemoved
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionRemoved = 0;
+    
+                    /**
+                     * Creates a new FeatureSupport instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport instance
+                     */
+                    FeatureSupport.create = function create(properties) {
+                        return new FeatureSupport(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSupport.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.editionIntroduced != null && Object.hasOwnProperty.call(message, "editionIntroduced"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.editionIntroduced);
+                        if (message.editionDeprecated != null && Object.hasOwnProperty.call(message, "editionDeprecated"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).int32(message.editionDeprecated);
+                        if (message.deprecationWarning != null && Object.hasOwnProperty.call(message, "deprecationWarning"))
+                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.deprecationWarning);
+                        if (message.editionRemoved != null && Object.hasOwnProperty.call(message, "editionRemoved"))
+                            writer.uint32(/* id 4, wireType 0 =*/32).int32(message.editionRemoved);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSupport.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a FeatureSupport message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSupport.decode = function decode(reader, length, error, long) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.FeatureSupport();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.editionIntroduced = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.editionDeprecated = reader.int32();
+                                    break;
+                                }
+                            case 3: {
+                                    message.deprecationWarning = reader.string();
+                                    break;
+                                }
+                            case 4: {
+                                    message.editionRemoved = reader.int32();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7, long);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSupport.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a FeatureSupport message.
+                     * @function verify
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    FeatureSupport.verify = function verify(message, long) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
+                        if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
+                            switch (message.editionIntroduced) {
+                            default:
+                                return "editionIntroduced: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated"))
+                            switch (message.editionDeprecated) {
+                            default:
+                                return "editionDeprecated: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning"))
+                            if (!$util.isString(message.deprecationWarning))
+                                return "deprecationWarning: string expected";
+                        if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved"))
+                            switch (message.editionRemoved) {
+                            default:
+                                return "editionRemoved: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     */
+                    FeatureSupport.fromObject = function fromObject(object, long) {
+                        if (object instanceof $root.google.protobuf.FieldOptions.FeatureSupport)
+                            return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var message = new $root.google.protobuf.FieldOptions.FeatureSupport();
+                        switch (object.editionIntroduced) {
+                        default:
+                            if (typeof object.editionIntroduced === "number") {
+                                message.editionIntroduced = object.editionIntroduced;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionIntroduced = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionIntroduced = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionIntroduced = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionIntroduced = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionIntroduced = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionIntroduced = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionIntroduced = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionIntroduced = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionIntroduced = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionIntroduced = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionIntroduced = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionIntroduced = 2147483647;
+                            break;
+                        }
+                        switch (object.editionDeprecated) {
+                        default:
+                            if (typeof object.editionDeprecated === "number") {
+                                message.editionDeprecated = object.editionDeprecated;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionDeprecated = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionDeprecated = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionDeprecated = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionDeprecated = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionDeprecated = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionDeprecated = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionDeprecated = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionDeprecated = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionDeprecated = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionDeprecated = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionDeprecated = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionDeprecated = 2147483647;
+                            break;
+                        }
+                        if (object.deprecationWarning != null)
+                            message.deprecationWarning = String(object.deprecationWarning);
+                        switch (object.editionRemoved) {
+                        default:
+                            if (typeof object.editionRemoved === "number") {
+                                message.editionRemoved = object.editionRemoved;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionRemoved = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionRemoved = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionRemoved = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionRemoved = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionRemoved = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionRemoved = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionRemoved = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionRemoved = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionRemoved = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionRemoved = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionRemoved = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionRemoved = 2147483647;
+                            break;
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.FeatureSupport} message FeatureSupport
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    FeatureSupport.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.editionIntroduced = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.editionDeprecated = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.deprecationWarning = "";
+                            object.editionRemoved = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                        }
+                        if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
+                            object.editionIntroduced = options.enums === String ? $root.google.protobuf.Edition[message.editionIntroduced] === undefined ? message.editionIntroduced : $root.google.protobuf.Edition[message.editionIntroduced] : message.editionIntroduced;
+                        if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated"))
+                            object.editionDeprecated = options.enums === String ? $root.google.protobuf.Edition[message.editionDeprecated] === undefined ? message.editionDeprecated : $root.google.protobuf.Edition[message.editionDeprecated] : message.editionDeprecated;
+                        if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning"))
+                            object.deprecationWarning = message.deprecationWarning;
+                        if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved"))
+                            object.editionRemoved = options.enums === String ? $root.google.protobuf.Edition[message.editionRemoved] === undefined ? message.editionRemoved : $root.google.protobuf.Edition[message.editionRemoved] : message.editionRemoved;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this FeatureSupport to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    FeatureSupport.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for FeatureSupport
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    FeatureSupport.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FieldOptions.FeatureSupport";
+                    };
+    
+                    return FeatureSupport;
+                })();
+    
                 return FieldOptions;
             })();
     
@@ -26312,7 +28681,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -26388,9 +28757,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofOptions.decode = function decode(reader, length, error) {
+                OneofOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -26398,17 +28771,17 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -26439,11 +28812,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofOptions.verify = function verify(message) {
+                OneofOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -26451,7 +28828,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -26467,14 +28844,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofOptions} OneofOptions
                  */
-                OneofOptions.fromObject = function fromObject(object) {
+                OneofOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.OneofOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -26483,7 +28864,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -26570,7 +28951,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -26676,9 +29057,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumOptions.decode = function decode(reader, length, error) {
+                EnumOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -26698,17 +29083,17 @@
                                 break;
                             }
                         case 7: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -26739,9 +29124,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumOptions.verify = function verify(message) {
+                EnumOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.allowAlias != null && message.hasOwnProperty("allowAlias"))
                         if (typeof message.allowAlias !== "boolean")
                             return "allowAlias: boolean expected";
@@ -26752,7 +29141,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -26760,7 +29149,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -26776,9 +29165,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumOptions} EnumOptions
                  */
-                EnumOptions.fromObject = function fromObject(object) {
+                EnumOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumOptions();
                     if (object.allowAlias != null)
                         message.allowAlias = Boolean(object.allowAlias);
@@ -26789,7 +29182,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -26798,7 +29191,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -26879,6 +29272,7 @@
                  * @property {boolean|null} [deprecated] EnumValueOptions deprecated
                  * @property {google.protobuf.IFeatureSet|null} [features] EnumValueOptions features
                  * @property {boolean|null} [debugRedact] EnumValueOptions debugRedact
+                 * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] EnumValueOptions featureSupport
                  * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] EnumValueOptions uninterpretedOption
                  */
     
@@ -26894,7 +29288,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -26922,6 +29316,14 @@
                  */
                 EnumValueOptions.prototype.debugRedact = false;
     
+                /**
+                 * EnumValueOptions featureSupport.
+                 * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @instance
+                 */
+                EnumValueOptions.prototype.featureSupport = null;
+    
                 /**
                  * EnumValueOptions uninterpretedOption.
                  * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
@@ -26960,6 +29362,8 @@
                         $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                     if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact"))
                         writer.uint32(/* id 3, wireType 0 =*/24).bool(message.debugRedact);
+                    if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport"))
+                        $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
                     if (message.uninterpretedOption != null && message.uninterpretedOption.length)
                         for (var i = 0; i < message.uninterpretedOption.length; ++i)
                             $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
@@ -26990,9 +29394,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueOptions.decode = function decode(reader, length, error) {
+                EnumValueOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -27004,21 +29412,25 @@
                                 break;
                             }
                         case 2: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
                                 message.debugRedact = reader.bool();
                                 break;
                             }
+                        case 4: {
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -27049,25 +29461,34 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueOptions.verify = function verify(message) {
+                EnumValueOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         if (typeof message.debugRedact !== "boolean")
                             return "debugRedact: boolean expected";
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
+                        if (error)
+                            return "featureSupport." + error;
+                    }
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -27083,19 +29504,28 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueOptions} EnumValueOptions
                  */
-                EnumValueOptions.fromObject = function fromObject(object) {
+                EnumValueOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumValueOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.debugRedact != null)
                         message.debugRedact = Boolean(object.debugRedact);
+                    if (object.featureSupport != null) {
+                        if (typeof object.featureSupport !== "object")
+                            throw TypeError(".google.protobuf.EnumValueOptions.featureSupport: object expected");
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
+                    }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
                             throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected");
@@ -27103,7 +29533,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -27128,6 +29558,7 @@
                         object.deprecated = false;
                         object.features = null;
                         object.debugRedact = false;
+                        object.featureSupport = null;
                     }
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         object.deprecated = message.deprecated;
@@ -27135,6 +29566,8 @@
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         object.debugRedact = message.debugRedact;
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport"))
+                        object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
                         object.uninterpretedOption = [];
                         for (var j = 0; j < message.uninterpretedOption.length; ++j)
@@ -27198,7 +29631,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -27314,9 +29747,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceOptions.decode = function decode(reader, length, error) {
+                ServiceOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -27324,7 +29761,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 34: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 33: {
@@ -27334,7 +29771,7 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1049: {
@@ -27350,7 +29787,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -27381,11 +29818,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceOptions.verify = function verify(message) {
+                ServiceOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -27396,7 +29837,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -27421,14 +29862,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceOptions} ServiceOptions
                  */
-                ServiceOptions.fromObject = function fromObject(object) {
+                ServiceOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ServiceOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -27439,7 +29884,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.defaultHost"] != null)
@@ -27547,7 +29992,7 @@
                     this[".google.api.methodSignature"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -27664,9 +30109,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodOptions.decode = function decode(reader, length, error) {
+                MethodOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -27682,17 +30131,17 @@
                                 break;
                             }
                         case 35: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 72295728: {
-                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32());
+                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 1051: {
@@ -27702,7 +30151,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -27733,9 +30182,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodOptions.verify = function verify(message) {
+                MethodOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
@@ -27749,7 +30202,7 @@
                             break;
                         }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -27757,13 +30210,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) {
-                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"]);
+                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"], long + 1);
                         if (error)
                             return ".google.api.http." + error;
                     }
@@ -27785,9 +30238,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodOptions} MethodOptions
                  */
-                MethodOptions.fromObject = function fromObject(object) {
+                MethodOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -27814,7 +30271,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MethodOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -27823,13 +30280,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.http"] != null) {
                         if (typeof object[".google.api.http"] !== "object")
                             throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected");
-                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]);
+                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"], long + 1);
                     }
                     if (object[".google.api.methodSignature"]) {
                         if (!Array.isArray(object[".google.api.methodSignature"]))
@@ -27957,7 +30414,7 @@
                     this.name = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -28083,9 +30540,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                UninterpretedOption.decode = function decode(reader, length, error) {
+                UninterpretedOption.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -28095,7 +30556,7 @@
                         case 2: {
                                 if (!(message.name && message.name.length))
                                     message.name = [];
-                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32()));
+                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
@@ -28123,7 +30584,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -28154,14 +30615,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                UninterpretedOption.verify = function verify(message) {
+                UninterpretedOption.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name")) {
                         if (!Array.isArray(message.name))
                             return "name: array expected";
                         for (var i = 0; i < message.name.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i], long + 1);
                             if (error)
                                 return "name." + error;
                         }
@@ -28195,9 +30660,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.UninterpretedOption} UninterpretedOption
                  */
-                UninterpretedOption.fromObject = function fromObject(object) {
+                UninterpretedOption.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.UninterpretedOption)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.UninterpretedOption();
                     if (object.name) {
                         if (!Array.isArray(object.name))
@@ -28206,7 +30675,7 @@
                         for (var i = 0; i < object.name.length; ++i) {
                             if (typeof object.name[i] !== "object")
                                 throw TypeError(".google.protobuf.UninterpretedOption.name: object expected");
-                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]);
+                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i], long + 1);
                         }
                     }
                     if (object.identifierValue != null)
@@ -28351,7 +30820,7 @@
                     function NamePart(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -28424,9 +30893,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    NamePart.decode = function decode(reader, length, error) {
+                    NamePart.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -28442,7 +30915,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -28477,9 +30950,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    NamePart.verify = function verify(message) {
+                    NamePart.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (!$util.isString(message.namePart))
                             return "namePart: string expected";
                         if (typeof message.isExtension !== "boolean")
@@ -28495,9 +30972,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
                      */
-                    NamePart.fromObject = function fromObject(object) {
+                    NamePart.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         if (object.namePart != null)
                             message.namePart = String(object.namePart);
@@ -28574,6 +31055,8 @@
                  * @property {google.protobuf.FeatureSet.Utf8Validation|null} [utf8Validation] FeatureSet utf8Validation
                  * @property {google.protobuf.FeatureSet.MessageEncoding|null} [messageEncoding] FeatureSet messageEncoding
                  * @property {google.protobuf.FeatureSet.JsonFormat|null} [jsonFormat] FeatureSet jsonFormat
+                 * @property {google.protobuf.FeatureSet.EnforceNamingStyle|null} [enforceNamingStyle] FeatureSet enforceNamingStyle
+                 * @property {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null} [defaultSymbolVisibility] FeatureSet defaultSymbolVisibility
                  */
     
                 /**
@@ -28587,7 +31070,7 @@
                 function FeatureSet(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -28639,6 +31122,22 @@
                  */
                 FeatureSet.prototype.jsonFormat = 0;
     
+                /**
+                 * FeatureSet enforceNamingStyle.
+                 * @member {google.protobuf.FeatureSet.EnforceNamingStyle} enforceNamingStyle
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.enforceNamingStyle = 0;
+    
+                /**
+                 * FeatureSet defaultSymbolVisibility.
+                 * @member {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility} defaultSymbolVisibility
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.defaultSymbolVisibility = 0;
+    
                 /**
                  * Creates a new FeatureSet instance using the specified properties.
                  * @function create
@@ -28675,6 +31174,10 @@
                         writer.uint32(/* id 5, wireType 0 =*/40).int32(message.messageEncoding);
                     if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat"))
                         writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jsonFormat);
+                    if (message.enforceNamingStyle != null && Object.hasOwnProperty.call(message, "enforceNamingStyle"))
+                        writer.uint32(/* id 7, wireType 0 =*/56).int32(message.enforceNamingStyle);
+                    if (message.defaultSymbolVisibility != null && Object.hasOwnProperty.call(message, "defaultSymbolVisibility"))
+                        writer.uint32(/* id 8, wireType 0 =*/64).int32(message.defaultSymbolVisibility);
                     return writer;
                 };
     
@@ -28702,9 +31205,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSet.decode = function decode(reader, length, error) {
+                FeatureSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -28735,8 +31242,16 @@
                                 message.jsonFormat = reader.int32();
                                 break;
                             }
+                        case 7: {
+                                message.enforceNamingStyle = reader.int32();
+                                break;
+                            }
+                        case 8: {
+                                message.defaultSymbolVisibility = reader.int32();
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -28767,9 +31282,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSet.verify = function verify(message) {
+                FeatureSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
                         switch (message.fieldPresence) {
                         default:
@@ -28825,6 +31344,26 @@
                         case 2:
                             break;
                         }
+                    if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle"))
+                        switch (message.enforceNamingStyle) {
+                        default:
+                            return "enforceNamingStyle: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility"))
+                        switch (message.defaultSymbolVisibility) {
+                        default:
+                            return "defaultSymbolVisibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                        case 3:
+                        case 4:
+                            break;
+                        }
                     return null;
                 };
     
@@ -28836,9 +31375,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSet} FeatureSet
                  */
-                FeatureSet.fromObject = function fromObject(object) {
+                FeatureSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSet();
                     switch (object.fieldPresence) {
                     default:
@@ -28964,6 +31507,54 @@
                         message.jsonFormat = 2;
                         break;
                     }
+                    switch (object.enforceNamingStyle) {
+                    default:
+                        if (typeof object.enforceNamingStyle === "number") {
+                            message.enforceNamingStyle = object.enforceNamingStyle;
+                            break;
+                        }
+                        break;
+                    case "ENFORCE_NAMING_STYLE_UNKNOWN":
+                    case 0:
+                        message.enforceNamingStyle = 0;
+                        break;
+                    case "STYLE2024":
+                    case 1:
+                        message.enforceNamingStyle = 1;
+                        break;
+                    case "STYLE_LEGACY":
+                    case 2:
+                        message.enforceNamingStyle = 2;
+                        break;
+                    }
+                    switch (object.defaultSymbolVisibility) {
+                    default:
+                        if (typeof object.defaultSymbolVisibility === "number") {
+                            message.defaultSymbolVisibility = object.defaultSymbolVisibility;
+                            break;
+                        }
+                        break;
+                    case "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN":
+                    case 0:
+                        message.defaultSymbolVisibility = 0;
+                        break;
+                    case "EXPORT_ALL":
+                    case 1:
+                        message.defaultSymbolVisibility = 1;
+                        break;
+                    case "EXPORT_TOP_LEVEL":
+                    case 2:
+                        message.defaultSymbolVisibility = 2;
+                        break;
+                    case "LOCAL_ALL":
+                    case 3:
+                        message.defaultSymbolVisibility = 3;
+                        break;
+                    case "STRICT":
+                    case 4:
+                        message.defaultSymbolVisibility = 4;
+                        break;
+                    }
                     return message;
                 };
     
@@ -28987,6 +31578,8 @@
                         object.utf8Validation = options.enums === String ? "UTF8_VALIDATION_UNKNOWN" : 0;
                         object.messageEncoding = options.enums === String ? "MESSAGE_ENCODING_UNKNOWN" : 0;
                         object.jsonFormat = options.enums === String ? "JSON_FORMAT_UNKNOWN" : 0;
+                        object.enforceNamingStyle = options.enums === String ? "ENFORCE_NAMING_STYLE_UNKNOWN" : 0;
+                        object.defaultSymbolVisibility = options.enums === String ? "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN" : 0;
                     }
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
                         object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence;
@@ -29000,6 +31593,10 @@
                         object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding;
                     if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat"))
                         object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat;
+                    if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle"))
+                        object.enforceNamingStyle = options.enums === String ? $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] === undefined ? message.enforceNamingStyle : $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] : message.enforceNamingStyle;
+                    if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility"))
+                        object.defaultSymbolVisibility = options.enums === String ? $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] === undefined ? message.defaultSymbolVisibility : $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] : message.defaultSymbolVisibility;
                     return object;
                 };
     
@@ -29127,6 +31724,231 @@
                     return values;
                 })();
     
+                /**
+                 * EnforceNamingStyle enum.
+                 * @name google.protobuf.FeatureSet.EnforceNamingStyle
+                 * @enum {number}
+                 * @property {number} ENFORCE_NAMING_STYLE_UNKNOWN=0 ENFORCE_NAMING_STYLE_UNKNOWN value
+                 * @property {number} STYLE2024=1 STYLE2024 value
+                 * @property {number} STYLE_LEGACY=2 STYLE_LEGACY value
+                 */
+                FeatureSet.EnforceNamingStyle = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "ENFORCE_NAMING_STYLE_UNKNOWN"] = 0;
+                    values[valuesById[1] = "STYLE2024"] = 1;
+                    values[valuesById[2] = "STYLE_LEGACY"] = 2;
+                    return values;
+                })();
+    
+                FeatureSet.VisibilityFeature = (function() {
+    
+                    /**
+                     * Properties of a VisibilityFeature.
+                     * @memberof google.protobuf.FeatureSet
+                     * @interface IVisibilityFeature
+                     */
+    
+                    /**
+                     * Constructs a new VisibilityFeature.
+                     * @memberof google.protobuf.FeatureSet
+                     * @classdesc Represents a VisibilityFeature.
+                     * @implements IVisibilityFeature
+                     * @constructor
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set
+                     */
+                    function VisibilityFeature(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * Creates a new VisibilityFeature instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature instance
+                     */
+                    VisibilityFeature.create = function create(properties) {
+                        return new VisibilityFeature(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    VisibilityFeature.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    VisibilityFeature.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a VisibilityFeature message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    VisibilityFeature.decode = function decode(reader, length, error, long) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet.VisibilityFeature();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            default:
+                                reader.skipType(tag & 7, long);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    VisibilityFeature.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a VisibilityFeature message.
+                     * @function verify
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    VisibilityFeature.verify = function verify(message, long) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     */
+                    VisibilityFeature.fromObject = function fromObject(object, long) {
+                        if (object instanceof $root.google.protobuf.FeatureSet.VisibilityFeature)
+                            return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        return new $root.google.protobuf.FeatureSet.VisibilityFeature();
+                    };
+    
+                    /**
+                     * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.VisibilityFeature} message VisibilityFeature
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    VisibilityFeature.toObject = function toObject() {
+                        return {};
+                    };
+    
+                    /**
+                     * Converts this VisibilityFeature to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    VisibilityFeature.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for VisibilityFeature
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    VisibilityFeature.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FeatureSet.VisibilityFeature";
+                    };
+    
+                    /**
+                     * DefaultSymbolVisibility enum.
+                     * @name google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility
+                     * @enum {number}
+                     * @property {number} DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0 DEFAULT_SYMBOL_VISIBILITY_UNKNOWN value
+                     * @property {number} EXPORT_ALL=1 EXPORT_ALL value
+                     * @property {number} EXPORT_TOP_LEVEL=2 EXPORT_TOP_LEVEL value
+                     * @property {number} LOCAL_ALL=3 LOCAL_ALL value
+                     * @property {number} STRICT=4 STRICT value
+                     */
+                    VisibilityFeature.DefaultSymbolVisibility = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN"] = 0;
+                        values[valuesById[1] = "EXPORT_ALL"] = 1;
+                        values[valuesById[2] = "EXPORT_TOP_LEVEL"] = 2;
+                        values[valuesById[3] = "LOCAL_ALL"] = 3;
+                        values[valuesById[4] = "STRICT"] = 4;
+                        return values;
+                    })();
+    
+                    return VisibilityFeature;
+                })();
+    
                 return FeatureSet;
             })();
     
@@ -29153,7 +31975,7 @@
                     this.defaults = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -29239,9 +32061,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSetDefaults.decode = function decode(reader, length, error) {
+                FeatureSetDefaults.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -29251,7 +32077,7 @@
                         case 1: {
                                 if (!(message.defaults && message.defaults.length))
                                     message.defaults = [];
-                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32()));
+                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
@@ -29263,7 +32089,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -29294,14 +32120,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSetDefaults.verify = function verify(message) {
+                FeatureSetDefaults.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.defaults != null && message.hasOwnProperty("defaults")) {
                         if (!Array.isArray(message.defaults))
                             return "defaults: array expected";
                         for (var i = 0; i < message.defaults.length; ++i) {
-                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i]);
+                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i], long + 1);
                             if (error)
                                 return "defaults." + error;
                         }
@@ -29311,6 +32141,7 @@
                         default:
                             return "minimumEdition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -29328,6 +32159,7 @@
                         default:
                             return "maximumEdition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -29351,9 +32183,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults
                  */
-                FeatureSetDefaults.fromObject = function fromObject(object) {
+                FeatureSetDefaults.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSetDefaults)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSetDefaults();
                     if (object.defaults) {
                         if (!Array.isArray(object.defaults))
@@ -29362,7 +32198,7 @@
                         for (var i = 0; i < object.defaults.length; ++i) {
                             if (typeof object.defaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: object expected");
-                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i]);
+                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i], long + 1);
                         }
                     }
                     switch (object.minimumEdition) {
@@ -29376,6 +32212,10 @@
                     case 0:
                         message.minimumEdition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.minimumEdition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.minimumEdition = 998;
@@ -29428,6 +32268,10 @@
                     case 0:
                         message.maximumEdition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.maximumEdition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.maximumEdition = 998;
@@ -29536,7 +32380,8 @@
                      * @memberof google.protobuf.FeatureSetDefaults
                      * @interface IFeatureSetEditionDefault
                      * @property {google.protobuf.Edition|null} [edition] FeatureSetEditionDefault edition
-                     * @property {google.protobuf.IFeatureSet|null} [features] FeatureSetEditionDefault features
+                     * @property {google.protobuf.IFeatureSet|null} [overridableFeatures] FeatureSetEditionDefault overridableFeatures
+                     * @property {google.protobuf.IFeatureSet|null} [fixedFeatures] FeatureSetEditionDefault fixedFeatures
                      */
     
                     /**
@@ -29550,7 +32395,7 @@
                     function FeatureSetEditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -29563,12 +32408,20 @@
                     FeatureSetEditionDefault.prototype.edition = 0;
     
                     /**
-                     * FeatureSetEditionDefault features.
-                     * @member {google.protobuf.IFeatureSet|null|undefined} features
+                     * FeatureSetEditionDefault overridableFeatures.
+                     * @member {google.protobuf.IFeatureSet|null|undefined} overridableFeatures
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @instance
+                     */
+                    FeatureSetEditionDefault.prototype.overridableFeatures = null;
+    
+                    /**
+                     * FeatureSetEditionDefault fixedFeatures.
+                     * @member {google.protobuf.IFeatureSet|null|undefined} fixedFeatures
                      * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
                      * @instance
                      */
-                    FeatureSetEditionDefault.prototype.features = null;
+                    FeatureSetEditionDefault.prototype.fixedFeatures = null;
     
                     /**
                      * Creates a new FeatureSetEditionDefault instance using the specified properties.
@@ -29594,10 +32447,12 @@
                     FeatureSetEditionDefault.encode = function encode(message, writer) {
                         if (!writer)
                             writer = $Writer.create();
-                        if (message.features != null && Object.hasOwnProperty.call(message, "features"))
-                            $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                         if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
                             writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition);
+                        if (message.overridableFeatures != null && Object.hasOwnProperty.call(message, "overridableFeatures"))
+                            $root.google.protobuf.FeatureSet.encode(message.overridableFeatures, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                        if (message.fixedFeatures != null && Object.hasOwnProperty.call(message, "fixedFeatures"))
+                            $root.google.protobuf.FeatureSet.encode(message.fixedFeatures, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
                         return writer;
                     };
     
@@ -29625,9 +32480,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    FeatureSetEditionDefault.decode = function decode(reader, length, error) {
+                    FeatureSetEditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -29638,12 +32497,16 @@
                                     message.edition = reader.int32();
                                     break;
                                 }
-                            case 2: {
-                                    message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                            case 4: {
+                                    message.overridableFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
+                                    break;
+                                }
+                            case 5: {
+                                    message.fixedFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -29674,14 +32537,19 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    FeatureSetEditionDefault.verify = function verify(message) {
+                    FeatureSetEditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
                                 return "edition: enum value expected";
                             case 0:
+                            case 900:
                             case 998:
                             case 999:
                             case 1000:
@@ -29694,10 +32562,15 @@
                             case 2147483647:
                                 break;
                             }
-                        if (message.features != null && message.hasOwnProperty("features")) {
-                            var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) {
+                            var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures, long + 1);
+                            if (error)
+                                return "overridableFeatures." + error;
+                        }
+                        if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) {
+                            var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures, long + 1);
                             if (error)
-                                return "features." + error;
+                                return "fixedFeatures." + error;
                         }
                         return null;
                     };
@@ -29710,9 +32583,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault
                      */
-                    FeatureSetEditionDefault.fromObject = function fromObject(object) {
+                    FeatureSetEditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         switch (object.edition) {
                         default:
@@ -29725,6 +32602,10 @@
                         case 0:
                             message.edition = 0;
                             break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.edition = 900;
+                            break;
                         case "EDITION_PROTO2":
                         case 998:
                             message.edition = 998;
@@ -29766,10 +32647,15 @@
                             message.edition = 2147483647;
                             break;
                         }
-                        if (object.features != null) {
-                            if (typeof object.features !== "object")
-                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features: object expected");
-                            message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        if (object.overridableFeatures != null) {
+                            if (typeof object.overridableFeatures !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridableFeatures: object expected");
+                            message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures, long + 1);
+                        }
+                        if (object.fixedFeatures != null) {
+                            if (typeof object.fixedFeatures !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixedFeatures: object expected");
+                            message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures, long + 1);
                         }
                         return message;
                     };
@@ -29788,13 +32674,16 @@
                             options = {};
                         var object = {};
                         if (options.defaults) {
-                            object.features = null;
                             object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.overridableFeatures = null;
+                            object.fixedFeatures = null;
                         }
-                        if (message.features != null && message.hasOwnProperty("features"))
-                            object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures"))
+                            object.overridableFeatures = $root.google.protobuf.FeatureSet.toObject(message.overridableFeatures, options);
+                        if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures"))
+                            object.fixedFeatures = $root.google.protobuf.FeatureSet.toObject(message.fixedFeatures, options);
                         return object;
                     };
     
@@ -29851,7 +32740,7 @@
                     this.location = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -29917,9 +32806,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                SourceCodeInfo.decode = function decode(reader, length, error) {
+                SourceCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -29929,11 +32822,11 @@
                         case 1: {
                                 if (!(message.location && message.location.length))
                                     message.location = [];
-                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32()));
+                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -29964,14 +32857,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                SourceCodeInfo.verify = function verify(message) {
+                SourceCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.location != null && message.hasOwnProperty("location")) {
                         if (!Array.isArray(message.location))
                             return "location: array expected";
                         for (var i = 0; i < message.location.length; ++i) {
-                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]);
+                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i], long + 1);
                             if (error)
                                 return "location." + error;
                         }
@@ -29987,9 +32884,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo
                  */
-                SourceCodeInfo.fromObject = function fromObject(object) {
+                SourceCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.SourceCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.SourceCodeInfo();
                     if (object.location) {
                         if (!Array.isArray(object.location))
@@ -29998,7 +32899,7 @@
                         for (var i = 0; i < object.location.length; ++i) {
                             if (typeof object.location[i] !== "object")
                                 throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected");
-                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]);
+                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i], long + 1);
                         }
                     }
                     return message;
@@ -30080,7 +32981,7 @@
                         this.leadingDetachedComments = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -30194,9 +33095,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Location.decode = function decode(reader, length, error) {
+                    Location.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -30240,7 +33145,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -30271,9 +33176,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Location.verify = function verify(message) {
+                    Location.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -30312,9 +33221,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.SourceCodeInfo.Location} Location
                      */
-                    Location.fromObject = function fromObject(object) {
+                    Location.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.SourceCodeInfo.Location)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.SourceCodeInfo.Location();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -30441,7 +33354,7 @@
                     this.annotation = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -30507,9 +33420,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GeneratedCodeInfo.decode = function decode(reader, length, error) {
+                GeneratedCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -30519,11 +33436,11 @@
                         case 1: {
                                 if (!(message.annotation && message.annotation.length))
                                     message.annotation = [];
-                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32()));
+                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -30554,14 +33471,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GeneratedCodeInfo.verify = function verify(message) {
+                GeneratedCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.annotation != null && message.hasOwnProperty("annotation")) {
                         if (!Array.isArray(message.annotation))
                             return "annotation: array expected";
                         for (var i = 0; i < message.annotation.length; ++i) {
-                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]);
+                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i], long + 1);
                             if (error)
                                 return "annotation." + error;
                         }
@@ -30577,9 +33498,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo
                  */
-                GeneratedCodeInfo.fromObject = function fromObject(object) {
+                GeneratedCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.GeneratedCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.GeneratedCodeInfo();
                     if (object.annotation) {
                         if (!Array.isArray(object.annotation))
@@ -30588,7 +33513,7 @@
                         for (var i = 0; i < object.annotation.length; ++i) {
                             if (typeof object.annotation[i] !== "object")
                                 throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected");
-                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]);
+                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i], long + 1);
                         }
                     }
                     return message;
@@ -30668,7 +33593,7 @@
                         this.path = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -30777,9 +33702,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Annotation.decode = function decode(reader, length, error) {
+                    Annotation.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -30814,7 +33743,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -30845,9 +33774,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Annotation.verify = function verify(message) {
+                    Annotation.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -30884,9 +33817,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation
                      */
-                    Annotation.fromObject = function fromObject(object) {
+                    Annotation.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -31009,6 +33946,22 @@
                 return GeneratedCodeInfo;
             })();
     
+            /**
+             * SymbolVisibility enum.
+             * @name google.protobuf.SymbolVisibility
+             * @enum {number}
+             * @property {number} VISIBILITY_UNSET=0 VISIBILITY_UNSET value
+             * @property {number} VISIBILITY_LOCAL=1 VISIBILITY_LOCAL value
+             * @property {number} VISIBILITY_EXPORT=2 VISIBILITY_EXPORT value
+             */
+            protobuf.SymbolVisibility = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "VISIBILITY_UNSET"] = 0;
+                values[valuesById[1] = "VISIBILITY_LOCAL"] = 1;
+                values[valuesById[2] = "VISIBILITY_EXPORT"] = 2;
+                return values;
+            })();
+    
             protobuf.Duration = (function() {
     
                 /**
@@ -31030,7 +33983,7 @@
                 function Duration(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -31105,9 +34058,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Duration.decode = function decode(reader, length, error) {
+                Duration.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Duration();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -31123,7 +34080,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -31154,9 +34111,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Duration.verify = function verify(message) {
+                Duration.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -31174,9 +34135,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Duration} Duration
                  */
-                Duration.fromObject = function fromObject(object) {
+                Duration.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Duration)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Duration();
                     if (object.seconds != null)
                         if ($util.Long)
@@ -31273,7 +34238,7 @@
                     this.paths = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -31339,9 +34304,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldMask.decode = function decode(reader, length, error) {
+                FieldMask.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldMask();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -31355,7 +34324,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -31386,9 +34355,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldMask.verify = function verify(message) {
+                FieldMask.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.paths != null && message.hasOwnProperty("paths")) {
                         if (!Array.isArray(message.paths))
                             return "paths: array expected";
@@ -31407,9 +34380,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldMask} FieldMask
                  */
-                FieldMask.fromObject = function fromObject(object) {
+                FieldMask.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldMask)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldMask();
                     if (object.paths) {
                         if (!Array.isArray(object.paths))
@@ -31492,7 +34469,7 @@
                 function Empty(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -31547,9 +34524,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Empty.decode = function decode(reader, length, error) {
+                Empty.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Empty();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -31557,7 +34538,7 @@
                             break;
                         switch (tag >>> 3) {
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -31588,9 +34569,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Empty.verify = function verify(message) {
+                Empty.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     return null;
                 };
     
@@ -31602,9 +34587,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Empty} Empty
                  */
-                Empty.fromObject = function fromObject(object) {
+                Empty.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Empty)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     return new $root.google.protobuf.Empty();
                 };
     
@@ -31671,7 +34660,7 @@
                 function Timestamp(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -31746,9 +34735,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Timestamp.decode = function decode(reader, length, error) {
+                Timestamp.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -31764,7 +34757,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -31795,9 +34788,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Timestamp.verify = function verify(message) {
+                Timestamp.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -31815,9 +34812,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Timestamp} Timestamp
                  */
-                Timestamp.fromObject = function fromObject(object) {
+                Timestamp.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Timestamp)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Timestamp();
                     if (object.seconds != null)
                         if ($util.Long)
@@ -32070,7 +35071,7 @@
                     function SetIamPolicyRequest(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -32155,9 +35156,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    SetIamPolicyRequest.decode = function decode(reader, length, error) {
+                    SetIamPolicyRequest.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.SetIamPolicyRequest();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -32169,15 +35174,15 @@
                                     break;
                                 }
                             case 2: {
-                                    message.policy = $root.google.iam.v1.Policy.decode(reader, reader.uint32());
+                                    message.policy = $root.google.iam.v1.Policy.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 3: {
-                                    message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32());
+                                    message.updateMask = $root.google.protobuf.FieldMask.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -32208,19 +35213,23 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    SetIamPolicyRequest.verify = function verify(message) {
+                    SetIamPolicyRequest.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.resource != null && message.hasOwnProperty("resource"))
                             if (!$util.isString(message.resource))
                                 return "resource: string expected";
                         if (message.policy != null && message.hasOwnProperty("policy")) {
-                            var error = $root.google.iam.v1.Policy.verify(message.policy);
+                            var error = $root.google.iam.v1.Policy.verify(message.policy, long + 1);
                             if (error)
                                 return "policy." + error;
                         }
                         if (message.updateMask != null && message.hasOwnProperty("updateMask")) {
-                            var error = $root.google.protobuf.FieldMask.verify(message.updateMask);
+                            var error = $root.google.protobuf.FieldMask.verify(message.updateMask, long + 1);
                             if (error)
                                 return "updateMask." + error;
                         }
@@ -32235,21 +35244,25 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.SetIamPolicyRequest} SetIamPolicyRequest
                      */
-                    SetIamPolicyRequest.fromObject = function fromObject(object) {
+                    SetIamPolicyRequest.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.SetIamPolicyRequest)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.SetIamPolicyRequest();
                         if (object.resource != null)
                             message.resource = String(object.resource);
                         if (object.policy != null) {
                             if (typeof object.policy !== "object")
                                 throw TypeError(".google.iam.v1.SetIamPolicyRequest.policy: object expected");
-                            message.policy = $root.google.iam.v1.Policy.fromObject(object.policy);
+                            message.policy = $root.google.iam.v1.Policy.fromObject(object.policy, long + 1);
                         }
                         if (object.updateMask != null) {
                             if (typeof object.updateMask !== "object")
                                 throw TypeError(".google.iam.v1.SetIamPolicyRequest.updateMask: object expected");
-                            message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask);
+                            message.updateMask = $root.google.protobuf.FieldMask.fromObject(object.updateMask, long + 1);
                         }
                         return message;
                     };
@@ -32331,7 +35344,7 @@
                     function GetIamPolicyRequest(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -32406,9 +35419,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    GetIamPolicyRequest.decode = function decode(reader, length, error) {
+                    GetIamPolicyRequest.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.GetIamPolicyRequest();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -32420,11 +35437,11 @@
                                     break;
                                 }
                             case 2: {
-                                    message.options = $root.google.iam.v1.GetPolicyOptions.decode(reader, reader.uint32());
+                                    message.options = $root.google.iam.v1.GetPolicyOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -32455,14 +35472,18 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    GetIamPolicyRequest.verify = function verify(message) {
+                    GetIamPolicyRequest.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.resource != null && message.hasOwnProperty("resource"))
                             if (!$util.isString(message.resource))
                                 return "resource: string expected";
                         if (message.options != null && message.hasOwnProperty("options")) {
-                            var error = $root.google.iam.v1.GetPolicyOptions.verify(message.options);
+                            var error = $root.google.iam.v1.GetPolicyOptions.verify(message.options, long + 1);
                             if (error)
                                 return "options." + error;
                         }
@@ -32477,16 +35498,20 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.GetIamPolicyRequest} GetIamPolicyRequest
                      */
-                    GetIamPolicyRequest.fromObject = function fromObject(object) {
+                    GetIamPolicyRequest.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.GetIamPolicyRequest)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.GetIamPolicyRequest();
                         if (object.resource != null)
                             message.resource = String(object.resource);
                         if (object.options != null) {
                             if (typeof object.options !== "object")
                                 throw TypeError(".google.iam.v1.GetIamPolicyRequest.options: object expected");
-                            message.options = $root.google.iam.v1.GetPolicyOptions.fromObject(object.options);
+                            message.options = $root.google.iam.v1.GetPolicyOptions.fromObject(object.options, long + 1);
                         }
                         return message;
                     };
@@ -32566,7 +35591,7 @@
                         this.permissions = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -32642,9 +35667,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    TestIamPermissionsRequest.decode = function decode(reader, length, error) {
+                    TestIamPermissionsRequest.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.TestIamPermissionsRequest();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -32662,7 +35691,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -32693,9 +35722,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    TestIamPermissionsRequest.verify = function verify(message) {
+                    TestIamPermissionsRequest.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.resource != null && message.hasOwnProperty("resource"))
                             if (!$util.isString(message.resource))
                                 return "resource: string expected";
@@ -32717,9 +35750,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.TestIamPermissionsRequest} TestIamPermissionsRequest
                      */
-                    TestIamPermissionsRequest.fromObject = function fromObject(object) {
+                    TestIamPermissionsRequest.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.TestIamPermissionsRequest)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.TestIamPermissionsRequest();
                         if (object.resource != null)
                             message.resource = String(object.resource);
@@ -32810,7 +35847,7 @@
                         this.permissions = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -32876,9 +35913,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    TestIamPermissionsResponse.decode = function decode(reader, length, error) {
+                    TestIamPermissionsResponse.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.TestIamPermissionsResponse();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -32892,7 +35933,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -32923,9 +35964,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    TestIamPermissionsResponse.verify = function verify(message) {
+                    TestIamPermissionsResponse.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.permissions != null && message.hasOwnProperty("permissions")) {
                             if (!Array.isArray(message.permissions))
                                 return "permissions: array expected";
@@ -32944,9 +35989,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.TestIamPermissionsResponse} TestIamPermissionsResponse
                      */
-                    TestIamPermissionsResponse.fromObject = function fromObject(object) {
+                    TestIamPermissionsResponse.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.TestIamPermissionsResponse)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.TestIamPermissionsResponse();
                         if (object.permissions) {
                             if (!Array.isArray(object.permissions))
@@ -33030,7 +36079,7 @@
                     function GetPolicyOptions(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -33095,9 +36144,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    GetPolicyOptions.decode = function decode(reader, length, error) {
+                    GetPolicyOptions.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.GetPolicyOptions();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -33109,7 +36162,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -33140,9 +36193,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    GetPolicyOptions.verify = function verify(message) {
+                    GetPolicyOptions.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.requestedPolicyVersion != null && message.hasOwnProperty("requestedPolicyVersion"))
                             if (!$util.isInteger(message.requestedPolicyVersion))
                                 return "requestedPolicyVersion: integer expected";
@@ -33157,9 +36214,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.GetPolicyOptions} GetPolicyOptions
                      */
-                    GetPolicyOptions.fromObject = function fromObject(object) {
+                    GetPolicyOptions.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.GetPolicyOptions)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.GetPolicyOptions();
                         if (object.requestedPolicyVersion != null)
                             message.requestedPolicyVersion = object.requestedPolicyVersion | 0;
@@ -33240,7 +36301,7 @@
                         this.auditConfigs = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -33337,9 +36398,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Policy.decode = function decode(reader, length, error) {
+                    Policy.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.Policy();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -33353,13 +36418,13 @@
                             case 4: {
                                     if (!(message.bindings && message.bindings.length))
                                         message.bindings = [];
-                                    message.bindings.push($root.google.iam.v1.Binding.decode(reader, reader.uint32()));
+                                    message.bindings.push($root.google.iam.v1.Binding.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             case 6: {
                                     if (!(message.auditConfigs && message.auditConfigs.length))
                                         message.auditConfigs = [];
-                                    message.auditConfigs.push($root.google.iam.v1.AuditConfig.decode(reader, reader.uint32()));
+                                    message.auditConfigs.push($root.google.iam.v1.AuditConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             case 3: {
@@ -33367,7 +36432,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -33398,9 +36463,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Policy.verify = function verify(message) {
+                    Policy.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.version != null && message.hasOwnProperty("version"))
                             if (!$util.isInteger(message.version))
                                 return "version: integer expected";
@@ -33408,7 +36477,7 @@
                             if (!Array.isArray(message.bindings))
                                 return "bindings: array expected";
                             for (var i = 0; i < message.bindings.length; ++i) {
-                                var error = $root.google.iam.v1.Binding.verify(message.bindings[i]);
+                                var error = $root.google.iam.v1.Binding.verify(message.bindings[i], long + 1);
                                 if (error)
                                     return "bindings." + error;
                             }
@@ -33417,7 +36486,7 @@
                             if (!Array.isArray(message.auditConfigs))
                                 return "auditConfigs: array expected";
                             for (var i = 0; i < message.auditConfigs.length; ++i) {
-                                var error = $root.google.iam.v1.AuditConfig.verify(message.auditConfigs[i]);
+                                var error = $root.google.iam.v1.AuditConfig.verify(message.auditConfigs[i], long + 1);
                                 if (error)
                                     return "auditConfigs." + error;
                             }
@@ -33436,9 +36505,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.Policy} Policy
                      */
-                    Policy.fromObject = function fromObject(object) {
+                    Policy.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.Policy)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.Policy();
                         if (object.version != null)
                             message.version = object.version | 0;
@@ -33449,7 +36522,7 @@
                             for (var i = 0; i < object.bindings.length; ++i) {
                                 if (typeof object.bindings[i] !== "object")
                                     throw TypeError(".google.iam.v1.Policy.bindings: object expected");
-                                message.bindings[i] = $root.google.iam.v1.Binding.fromObject(object.bindings[i]);
+                                message.bindings[i] = $root.google.iam.v1.Binding.fromObject(object.bindings[i], long + 1);
                             }
                         }
                         if (object.auditConfigs) {
@@ -33459,7 +36532,7 @@
                             for (var i = 0; i < object.auditConfigs.length; ++i) {
                                 if (typeof object.auditConfigs[i] !== "object")
                                     throw TypeError(".google.iam.v1.Policy.auditConfigs: object expected");
-                                message.auditConfigs[i] = $root.google.iam.v1.AuditConfig.fromObject(object.auditConfigs[i]);
+                                message.auditConfigs[i] = $root.google.iam.v1.AuditConfig.fromObject(object.auditConfigs[i], long + 1);
                             }
                         }
                         if (object.etag != null)
@@ -33566,7 +36639,7 @@
                         this.members = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -33652,9 +36725,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Binding.decode = function decode(reader, length, error) {
+                    Binding.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.Binding();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -33672,11 +36749,11 @@
                                     break;
                                 }
                             case 3: {
-                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -33707,9 +36784,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Binding.verify = function verify(message) {
+                    Binding.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.role != null && message.hasOwnProperty("role"))
                             if (!$util.isString(message.role))
                                 return "role: string expected";
@@ -33721,7 +36802,7 @@
                                     return "members: string[] expected";
                         }
                         if (message.condition != null && message.hasOwnProperty("condition")) {
-                            var error = $root.google.type.Expr.verify(message.condition);
+                            var error = $root.google.type.Expr.verify(message.condition, long + 1);
                             if (error)
                                 return "condition." + error;
                         }
@@ -33736,9 +36817,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.Binding} Binding
                      */
-                    Binding.fromObject = function fromObject(object) {
+                    Binding.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.Binding)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.Binding();
                         if (object.role != null)
                             message.role = String(object.role);
@@ -33752,7 +36837,7 @@
                         if (object.condition != null) {
                             if (typeof object.condition !== "object")
                                 throw TypeError(".google.iam.v1.Binding.condition: object expected");
-                            message.condition = $root.google.type.Expr.fromObject(object.condition);
+                            message.condition = $root.google.type.Expr.fromObject(object.condition, long + 1);
                         }
                         return message;
                     };
@@ -33839,7 +36924,7 @@
                         this.auditLogConfigs = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -33915,9 +37000,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    AuditConfig.decode = function decode(reader, length, error) {
+                    AuditConfig.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.AuditConfig();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -33931,11 +37020,11 @@
                             case 3: {
                                     if (!(message.auditLogConfigs && message.auditLogConfigs.length))
                                         message.auditLogConfigs = [];
-                                    message.auditLogConfigs.push($root.google.iam.v1.AuditLogConfig.decode(reader, reader.uint32()));
+                                    message.auditLogConfigs.push($root.google.iam.v1.AuditLogConfig.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -33966,9 +37055,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    AuditConfig.verify = function verify(message) {
+                    AuditConfig.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.service != null && message.hasOwnProperty("service"))
                             if (!$util.isString(message.service))
                                 return "service: string expected";
@@ -33976,7 +37069,7 @@
                             if (!Array.isArray(message.auditLogConfigs))
                                 return "auditLogConfigs: array expected";
                             for (var i = 0; i < message.auditLogConfigs.length; ++i) {
-                                var error = $root.google.iam.v1.AuditLogConfig.verify(message.auditLogConfigs[i]);
+                                var error = $root.google.iam.v1.AuditLogConfig.verify(message.auditLogConfigs[i], long + 1);
                                 if (error)
                                     return "auditLogConfigs." + error;
                             }
@@ -33992,9 +37085,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.AuditConfig} AuditConfig
                      */
-                    AuditConfig.fromObject = function fromObject(object) {
+                    AuditConfig.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.AuditConfig)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.AuditConfig();
                         if (object.service != null)
                             message.service = String(object.service);
@@ -34005,7 +37102,7 @@
                             for (var i = 0; i < object.auditLogConfigs.length; ++i) {
                                 if (typeof object.auditLogConfigs[i] !== "object")
                                     throw TypeError(".google.iam.v1.AuditConfig.auditLogConfigs: object expected");
-                                message.auditLogConfigs[i] = $root.google.iam.v1.AuditLogConfig.fromObject(object.auditLogConfigs[i]);
+                                message.auditLogConfigs[i] = $root.google.iam.v1.AuditLogConfig.fromObject(object.auditLogConfigs[i], long + 1);
                             }
                         }
                         return message;
@@ -34089,7 +37186,7 @@
                         this.exemptedMembers = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -34165,9 +37262,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    AuditLogConfig.decode = function decode(reader, length, error) {
+                    AuditLogConfig.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.AuditLogConfig();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -34185,7 +37286,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -34216,9 +37317,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    AuditLogConfig.verify = function verify(message) {
+                    AuditLogConfig.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.logType != null && message.hasOwnProperty("logType"))
                             switch (message.logType) {
                             default:
@@ -34247,9 +37352,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.AuditLogConfig} AuditLogConfig
                      */
-                    AuditLogConfig.fromObject = function fromObject(object) {
+                    AuditLogConfig.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.AuditLogConfig)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.AuditLogConfig();
                         switch (object.logType) {
                         default:
@@ -34382,7 +37491,7 @@
                         this.auditConfigDeltas = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -34459,9 +37568,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    PolicyDelta.decode = function decode(reader, length, error) {
+                    PolicyDelta.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.PolicyDelta();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -34471,17 +37584,17 @@
                             case 1: {
                                     if (!(message.bindingDeltas && message.bindingDeltas.length))
                                         message.bindingDeltas = [];
-                                    message.bindingDeltas.push($root.google.iam.v1.BindingDelta.decode(reader, reader.uint32()));
+                                    message.bindingDeltas.push($root.google.iam.v1.BindingDelta.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             case 2: {
                                     if (!(message.auditConfigDeltas && message.auditConfigDeltas.length))
                                         message.auditConfigDeltas = [];
-                                    message.auditConfigDeltas.push($root.google.iam.v1.AuditConfigDelta.decode(reader, reader.uint32()));
+                                    message.auditConfigDeltas.push($root.google.iam.v1.AuditConfigDelta.decode(reader, reader.uint32(), undefined, long + 1));
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -34512,14 +37625,18 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    PolicyDelta.verify = function verify(message) {
+                    PolicyDelta.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.bindingDeltas != null && message.hasOwnProperty("bindingDeltas")) {
                             if (!Array.isArray(message.bindingDeltas))
                                 return "bindingDeltas: array expected";
                             for (var i = 0; i < message.bindingDeltas.length; ++i) {
-                                var error = $root.google.iam.v1.BindingDelta.verify(message.bindingDeltas[i]);
+                                var error = $root.google.iam.v1.BindingDelta.verify(message.bindingDeltas[i], long + 1);
                                 if (error)
                                     return "bindingDeltas." + error;
                             }
@@ -34528,7 +37645,7 @@
                             if (!Array.isArray(message.auditConfigDeltas))
                                 return "auditConfigDeltas: array expected";
                             for (var i = 0; i < message.auditConfigDeltas.length; ++i) {
-                                var error = $root.google.iam.v1.AuditConfigDelta.verify(message.auditConfigDeltas[i]);
+                                var error = $root.google.iam.v1.AuditConfigDelta.verify(message.auditConfigDeltas[i], long + 1);
                                 if (error)
                                     return "auditConfigDeltas." + error;
                             }
@@ -34544,9 +37661,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.PolicyDelta} PolicyDelta
                      */
-                    PolicyDelta.fromObject = function fromObject(object) {
+                    PolicyDelta.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.PolicyDelta)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.PolicyDelta();
                         if (object.bindingDeltas) {
                             if (!Array.isArray(object.bindingDeltas))
@@ -34555,7 +37676,7 @@
                             for (var i = 0; i < object.bindingDeltas.length; ++i) {
                                 if (typeof object.bindingDeltas[i] !== "object")
                                     throw TypeError(".google.iam.v1.PolicyDelta.bindingDeltas: object expected");
-                                message.bindingDeltas[i] = $root.google.iam.v1.BindingDelta.fromObject(object.bindingDeltas[i]);
+                                message.bindingDeltas[i] = $root.google.iam.v1.BindingDelta.fromObject(object.bindingDeltas[i], long + 1);
                             }
                         }
                         if (object.auditConfigDeltas) {
@@ -34565,7 +37686,7 @@
                             for (var i = 0; i < object.auditConfigDeltas.length; ++i) {
                                 if (typeof object.auditConfigDeltas[i] !== "object")
                                     throw TypeError(".google.iam.v1.PolicyDelta.auditConfigDeltas: object expected");
-                                message.auditConfigDeltas[i] = $root.google.iam.v1.AuditConfigDelta.fromObject(object.auditConfigDeltas[i]);
+                                message.auditConfigDeltas[i] = $root.google.iam.v1.AuditConfigDelta.fromObject(object.auditConfigDeltas[i], long + 1);
                             }
                         }
                         return message;
@@ -34653,7 +37774,7 @@
                     function BindingDelta(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -34748,9 +37869,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    BindingDelta.decode = function decode(reader, length, error) {
+                    BindingDelta.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.BindingDelta();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -34770,11 +37895,11 @@
                                     break;
                                 }
                             case 4: {
-                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32());
+                                    message.condition = $root.google.type.Expr.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -34805,9 +37930,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    BindingDelta.verify = function verify(message) {
+                    BindingDelta.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.action != null && message.hasOwnProperty("action"))
                             switch (message.action) {
                             default:
@@ -34824,7 +37953,7 @@
                             if (!$util.isString(message.member))
                                 return "member: string expected";
                         if (message.condition != null && message.hasOwnProperty("condition")) {
-                            var error = $root.google.type.Expr.verify(message.condition);
+                            var error = $root.google.type.Expr.verify(message.condition, long + 1);
                             if (error)
                                 return "condition." + error;
                         }
@@ -34839,9 +37968,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.BindingDelta} BindingDelta
                      */
-                    BindingDelta.fromObject = function fromObject(object) {
+                    BindingDelta.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.BindingDelta)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.BindingDelta();
                         switch (object.action) {
                         default:
@@ -34870,7 +38003,7 @@
                         if (object.condition != null) {
                             if (typeof object.condition !== "object")
                                 throw TypeError(".google.iam.v1.BindingDelta.condition: object expected");
-                            message.condition = $root.google.type.Expr.fromObject(object.condition);
+                            message.condition = $root.google.type.Expr.fromObject(object.condition, long + 1);
                         }
                         return message;
                     };
@@ -34973,7 +38106,7 @@
                     function AuditConfigDelta(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -35068,9 +38201,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    AuditConfigDelta.decode = function decode(reader, length, error) {
+                    AuditConfigDelta.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.iam.v1.AuditConfigDelta();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -35094,7 +38231,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -35125,9 +38262,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    AuditConfigDelta.verify = function verify(message) {
+                    AuditConfigDelta.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.action != null && message.hasOwnProperty("action"))
                             switch (message.action) {
                             default:
@@ -35157,9 +38298,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.iam.v1.AuditConfigDelta} AuditConfigDelta
                      */
-                    AuditConfigDelta.fromObject = function fromObject(object) {
+                    AuditConfigDelta.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.iam.v1.AuditConfigDelta)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.iam.v1.AuditConfigDelta();
                         switch (object.action) {
                         default:
@@ -35303,7 +38448,7 @@
                 function Expr(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -35398,9 +38543,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Expr.decode = function decode(reader, length, error) {
+                Expr.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.type.Expr();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -35424,7 +38573,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -35455,9 +38604,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Expr.verify = function verify(message) {
+                Expr.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.expression != null && message.hasOwnProperty("expression"))
                         if (!$util.isString(message.expression))
                             return "expression: string expected";
@@ -35481,9 +38634,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.type.Expr} Expr
                  */
-                Expr.fromObject = function fromObject(object) {
+                Expr.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.type.Expr)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.type.Expr();
                     if (object.expression != null)
                         message.expression = String(object.expression);
diff --git a/packages/google-cloud-servicedirectory/protos/protos.json b/packages/google-cloud-servicedirectory/protos/protos.json
index 3b80a35afa12..08ea7e5f5db5 100644
--- a/packages/google-cloud-servicedirectory/protos/protos.json
+++ b/packages/google-cloud-servicedirectory/protos/protos.json
@@ -1900,8 +1900,7 @@
             "java_multiple_files": true,
             "java_outer_classname": "LaunchStageProto",
             "java_package": "com.google.api",
-            "objc_class_prefix": "GAPI",
-            "cc_enable_arenas": true
+            "objc_class_prefix": "GAPI"
           },
           "nested": {
             "fieldBehavior": {
@@ -2124,6 +2123,10 @@
                   "rule": "repeated",
                   "type": "ClientLibraryDestination",
                   "id": 2
+                },
+                "selectiveGapicGeneration": {
+                  "type": "SelectiveGapicGeneration",
+                  "id": 3
                 }
               }
             },
@@ -2264,6 +2267,28 @@
                 "common": {
                   "type": "CommonLanguageSettings",
                   "id": 1
+                },
+                "experimentalFeatures": {
+                  "type": "ExperimentalFeatures",
+                  "id": 2
+                }
+              },
+              "nested": {
+                "ExperimentalFeatures": {
+                  "fields": {
+                    "restAsyncIoEnabled": {
+                      "type": "bool",
+                      "id": 1
+                    },
+                    "protobufPythonicTypesEnabled": {
+                      "type": "bool",
+                      "id": 2
+                    },
+                    "unversionedPackageDisabled": {
+                      "type": "bool",
+                      "id": 3
+                    }
+                  }
                 }
               }
             },
@@ -2321,6 +2346,11 @@
                 "common": {
                   "type": "CommonLanguageSettings",
                   "id": 1
+                },
+                "renamedServices": {
+                  "keyType": "string",
+                  "type": "string",
+                  "id": 2
                 }
               }
             },
@@ -2382,6 +2412,19 @@
                 "PACKAGE_MANAGER": 20
               }
             },
+            "SelectiveGapicGeneration": {
+              "fields": {
+                "methods": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 1
+                },
+                "generateOmittedAsInternal": {
+                  "type": "bool",
+                  "id": 2
+                }
+              }
+            },
             "LaunchStage": {
               "values": {
                 "LAUNCH_STAGE_UNSPECIFIED": 0,
@@ -2415,12 +2458,19 @@
                   "type": "FileDescriptorProto",
                   "id": 1
                 }
-              }
+              },
+              "extensions": [
+                [
+                  536000000,
+                  536000000
+                ]
+              ]
             },
             "Edition": {
               "edition": "proto2",
               "values": {
                 "EDITION_UNKNOWN": 0,
+                "EDITION_LEGACY": 900,
                 "EDITION_PROTO2": 998,
                 "EDITION_PROTO3": 999,
                 "EDITION_2023": 1000,
@@ -2459,6 +2509,11 @@
                   "type": "int32",
                   "id": 11
                 },
+                "optionDependency": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 15
+                },
                 "messageType": {
                   "rule": "repeated",
                   "type": "DescriptorProto",
@@ -2547,6 +2602,10 @@
                   "rule": "repeated",
                   "type": "string",
                   "id": 10
+                },
+                "visibility": {
+                  "type": "SymbolVisibility",
+                  "id": 11
                 }
               },
               "nested": {
@@ -2772,6 +2831,10 @@
                   "rule": "repeated",
                   "type": "string",
                   "id": 5
+                },
+                "visibility": {
+                  "type": "SymbolVisibility",
+                  "id": 6
                 }
               },
               "nested": {
@@ -2822,7 +2885,14 @@
                   "type": "ServiceOptions",
                   "id": 3
                 }
-              }
+              },
+              "reserved": [
+                [
+                  4,
+                  4
+                ],
+                "stream"
+              ]
             },
             "MethodDescriptorProto": {
               "edition": "proto2",
@@ -2986,6 +3056,7 @@
                   42,
                   42
                 ],
+                "php_generic_services",
                 [
                   38,
                   38
@@ -3121,7 +3192,8 @@
                   "type": "bool",
                   "id": 10,
                   "options": {
-                    "default": false
+                    "default": false,
+                    "deprecated": true
                   }
                 },
                 "debugRedact": {
@@ -3149,6 +3221,10 @@
                   "type": "FeatureSet",
                   "id": 21
                 },
+                "featureSupport": {
+                  "type": "FeatureSupport",
+                  "id": 22
+                },
                 "uninterpretedOption": {
                   "rule": "repeated",
                   "type": "UninterpretedOption",
@@ -3218,6 +3294,26 @@
                       "id": 2
                     }
                   }
+                },
+                "FeatureSupport": {
+                  "fields": {
+                    "editionIntroduced": {
+                      "type": "Edition",
+                      "id": 1
+                    },
+                    "editionDeprecated": {
+                      "type": "Edition",
+                      "id": 2
+                    },
+                    "deprecationWarning": {
+                      "type": "string",
+                      "id": 3
+                    },
+                    "editionRemoved": {
+                      "type": "Edition",
+                      "id": 4
+                    }
+                  }
                 }
               }
             },
@@ -3306,6 +3402,10 @@
                     "default": false
                   }
                 },
+                "featureSupport": {
+                  "type": "FieldOptions.FeatureSupport",
+                  "id": 4
+                },
                 "uninterpretedOption": {
                   "rule": "repeated",
                   "type": "UninterpretedOption",
@@ -3448,6 +3548,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_2023",
                     "edition_defaults.value": "EXPLICIT"
                   }
@@ -3458,6 +3559,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "OPEN"
                   }
@@ -3468,6 +3570,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "PACKED"
                   }
@@ -3478,6 +3581,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "VERIFY"
                   }
@@ -3488,7 +3592,8 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
-                    "edition_defaults.edition": "EDITION_PROTO2",
+                    "feature_support.edition_introduced": "EDITION_2023",
+                    "edition_defaults.edition": "EDITION_LEGACY",
                     "edition_defaults.value": "LENGTH_PREFIXED"
                   }
                 },
@@ -3498,27 +3603,38 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "ALLOW"
                   }
+                },
+                "enforceNamingStyle": {
+                  "type": "EnforceNamingStyle",
+                  "id": 7,
+                  "options": {
+                    "retention": "RETENTION_SOURCE",
+                    "targets": "TARGET_TYPE_METHOD",
+                    "feature_support.edition_introduced": "EDITION_2024",
+                    "edition_defaults.edition": "EDITION_2024",
+                    "edition_defaults.value": "STYLE2024"
+                  }
+                },
+                "defaultSymbolVisibility": {
+                  "type": "VisibilityFeature.DefaultSymbolVisibility",
+                  "id": 8,
+                  "options": {
+                    "retention": "RETENTION_SOURCE",
+                    "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2024",
+                    "edition_defaults.edition": "EDITION_2024",
+                    "edition_defaults.value": "EXPORT_TOP_LEVEL"
+                  }
                 }
               },
               "extensions": [
                 [
                   1000,
-                  1000
-                ],
-                [
-                  1001,
-                  1001
-                ],
-                [
-                  1002,
-                  1002
-                ],
-                [
-                  9990,
-                  9990
+                  9994
                 ],
                 [
                   9995,
@@ -3563,7 +3679,13 @@
                     "UTF8_VALIDATION_UNKNOWN": 0,
                     "VERIFY": 2,
                     "NONE": 3
-                  }
+                  },
+                  "reserved": [
+                    [
+                      1,
+                      1
+                    ]
+                  ]
                 },
                 "MessageEncoding": {
                   "values": {
@@ -3578,6 +3700,33 @@
                     "ALLOW": 1,
                     "LEGACY_BEST_EFFORT": 2
                   }
+                },
+                "EnforceNamingStyle": {
+                  "values": {
+                    "ENFORCE_NAMING_STYLE_UNKNOWN": 0,
+                    "STYLE2024": 1,
+                    "STYLE_LEGACY": 2
+                  }
+                },
+                "VisibilityFeature": {
+                  "fields": {},
+                  "reserved": [
+                    [
+                      1,
+                      536870911
+                    ]
+                  ],
+                  "nested": {
+                    "DefaultSymbolVisibility": {
+                      "values": {
+                        "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": 0,
+                        "EXPORT_ALL": 1,
+                        "EXPORT_TOP_LEVEL": 2,
+                        "LOCAL_ALL": 3,
+                        "STRICT": 4
+                      }
+                    }
+                  }
                 }
               }
             },
@@ -3605,11 +3754,26 @@
                       "type": "Edition",
                       "id": 3
                     },
-                    "features": {
+                    "overridableFeatures": {
                       "type": "FeatureSet",
-                      "id": 2
+                      "id": 4
+                    },
+                    "fixedFeatures": {
+                      "type": "FeatureSet",
+                      "id": 5
                     }
-                  }
+                  },
+                  "reserved": [
+                    [
+                      1,
+                      1
+                    ],
+                    [
+                      2,
+                      2
+                    ],
+                    "features"
+                  ]
                 }
               }
             },
@@ -3622,6 +3786,12 @@
                   "id": 1
                 }
               },
+              "extensions": [
+                [
+                  536000000,
+                  536000000
+                ]
+              ],
               "nested": {
                 "Location": {
                   "fields": {
@@ -3707,6 +3877,14 @@
                 }
               }
             },
+            "SymbolVisibility": {
+              "edition": "proto2",
+              "values": {
+                "VISIBILITY_UNSET": 0,
+                "VISIBILITY_LOCAL": 1,
+                "VISIBILITY_EXPORT": 2
+              }
+            },
             "Duration": {
               "fields": {
                 "seconds": {
@@ -3749,13 +3927,13 @@
           "nested": {
             "v1": {
               "options": {
-                "cc_enable_arenas": true,
                 "csharp_namespace": "Google.Cloud.Iam.V1",
                 "go_package": "cloud.google.com/go/iam/apiv1/iampb;iampb",
                 "java_multiple_files": true,
                 "java_outer_classname": "PolicyProto",
                 "java_package": "com.google.iam.v1",
-                "php_namespace": "Google\\Cloud\\Iam\\V1"
+                "php_namespace": "Google\\Cloud\\Iam\\V1",
+                "cc_enable_arenas": true
               },
               "nested": {
                 "IAMPolicy": {
diff --git a/packages/google-cloud-servicedirectory/src/v1/index.ts b/packages/google-cloud-servicedirectory/src/v1/index.ts
index e07a321f9339..0f60415e91f2 100644
--- a/packages/google-cloud-servicedirectory/src/v1/index.ts
+++ b/packages/google-cloud-servicedirectory/src/v1/index.ts
@@ -16,5 +16,5 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-export {LookupServiceClient} from './lookup_service_client';
-export {RegistrationServiceClient} from './registration_service_client';
+export { LookupServiceClient } from './lookup_service_client';
+export { RegistrationServiceClient } from './registration_service_client';
diff --git a/packages/google-cloud-servicedirectory/src/v1/lookup_service_client.ts b/packages/google-cloud-servicedirectory/src/v1/lookup_service_client.ts
index 3b1bbc86860e..c05a2bc077c0 100644
--- a/packages/google-cloud-servicedirectory/src/v1/lookup_service_client.ts
+++ b/packages/google-cloud-servicedirectory/src/v1/lookup_service_client.ts
@@ -18,11 +18,18 @@
 
 /* global window */
 import type * as gax from 'google-gax';
-import type {Callback, CallOptions, Descriptors, ClientOptions, LocationsClient, LocationProtos} from 'google-gax';
+import type {
+  Callback,
+  CallOptions,
+  Descriptors,
+  ClientOptions,
+  LocationsClient,
+  LocationProtos,
+} from 'google-gax';
 
 import * as protos from '../../protos/protos';
 import jsonProtos = require('../../protos/protos.json');
-import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax';
+import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax';
 
 /**
  * Client JSON configuration object, loaded from
@@ -44,7 +51,7 @@ export class LookupServiceClient {
   private _gaxModule: typeof gax | typeof gax.fallback;
   private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
   private _protos: {};
-  private _defaults: {[method: string]: gax.CallSettings};
+  private _defaults: { [method: string]: gax.CallSettings };
   private _universeDomain: string;
   private _servicePath: string;
   private _log = logging.log('service-directory');
@@ -57,10 +64,10 @@ export class LookupServiceClient {
     batching: {},
   };
   warn: (code: string, message: string, warnType?: string) => void;
-  innerApiCalls: {[name: string]: Function};
+  innerApiCalls: { [name: string]: Function };
   locationsClient: LocationsClient;
-  pathTemplates: {[name: string]: gax.PathTemplate};
-  lookupServiceStub?: Promise<{[name: string]: Function}>;
+  pathTemplates: { [name: string]: gax.PathTemplate };
+  lookupServiceStub?: Promise<{ [name: string]: Function }>;
 
   /**
    * Construct an instance of LookupServiceClient.
@@ -101,21 +108,42 @@ export class LookupServiceClient {
    *     const client = new LookupServiceClient({fallback: true}, gax);
    *     ```
    */
-  constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) {
+  constructor(
+    opts?: ClientOptions,
+    gaxInstance?: typeof gax | typeof gax.fallback,
+  ) {
     // Ensure that options include all the required fields.
     const staticMembers = this.constructor as typeof LookupServiceClient;
-    if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) {
-      throw new Error('Please set either universe_domain or universeDomain, but not both.');
+    if (
+      opts?.universe_domain &&
+      opts?.universeDomain &&
+      opts?.universe_domain !== opts?.universeDomain
+    ) {
+      throw new Error(
+        'Please set either universe_domain or universeDomain, but not both.',
+      );
     }
-    const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined;
-    this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com';
+    const universeDomainEnvVar =
+      typeof process === 'object' && typeof process.env === 'object'
+        ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']
+        : undefined;
+    this._universeDomain =
+      opts?.universeDomain ??
+      opts?.universe_domain ??
+      universeDomainEnvVar ??
+      'googleapis.com';
     this._servicePath = 'servicedirectory.' + this._universeDomain;
-    const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath;
-    this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint);
+    const servicePath =
+      opts?.servicePath || opts?.apiEndpoint || this._servicePath;
+    this._providedCustomServicePath = !!(
+      opts?.servicePath || opts?.apiEndpoint
+    );
     const port = opts?.port || staticMembers.port;
     const clientConfig = opts?.clientConfig ?? {};
-    const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function');
-    opts = Object.assign({servicePath, port, clientConfig, fallback}, opts);
+    const fallback =
+      opts?.fallback ??
+      (typeof window !== 'undefined' && typeof window?.fetch === 'function');
+    opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts);
 
     // Request numeric enum values if REST transport is used.
     opts.numericEnums = true;
@@ -140,7 +168,7 @@ export class LookupServiceClient {
     this._opts = opts;
 
     // Save the auth object to the client, for use by other methods.
-    this.auth = (this._gaxGrpc.auth as gax.GoogleAuth);
+    this.auth = this._gaxGrpc.auth as gax.GoogleAuth;
 
     // Set useJWTAccessWithScope on the auth object.
     this.auth.useJWTAccessWithScope = true;
@@ -154,15 +182,11 @@ export class LookupServiceClient {
     }
     this.locationsClient = new this._gaxModule.LocationsClient(
       this._gaxGrpc,
-      opts
+      opts,
     );
-  
 
     // Determine the client header string.
-    const clientHeader = [
-      `gax/${this._gaxModule.version}`,
-      `gapic/${version}`,
-    ];
+    const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
     if (typeof process === 'object' && 'versions' in process) {
       clientHeader.push(`gl-node/${process.versions.node}`);
     } else {
@@ -184,20 +208,23 @@ export class LookupServiceClient {
     // Create useful helper objects for these.
     this.pathTemplates = {
       endpointPathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}/endpoints/{endpoint}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}/endpoints/{endpoint}',
       ),
       namespacePathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}',
       ),
       servicePathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}',
       ),
     };
 
     // Put together the default options sent with requests.
     this._defaults = this._gaxGrpc.constructSettings(
-        'google.cloud.servicedirectory.v1.LookupService', gapicConfig as gax.ClientConfig,
-        opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')});
+      'google.cloud.servicedirectory.v1.LookupService',
+      gapicConfig as gax.ClientConfig,
+      opts.clientConfig || {},
+      { 'x-goog-api-client': clientHeader.join(' ') },
+    );
 
     // Set up a dictionary of "inner API calls"; the core implementation
     // of calling the API is handled in `google-gax`, with this code
@@ -228,36 +255,40 @@ export class LookupServiceClient {
     // Put together the "service stub" for
     // google.cloud.servicedirectory.v1.LookupService.
     this.lookupServiceStub = this._gaxGrpc.createStub(
-        this._opts.fallback ?
-          (this._protos as protobuf.Root).lookupService('google.cloud.servicedirectory.v1.LookupService') :
-          // eslint-disable-next-line @typescript-eslint/no-explicit-any
+      this._opts.fallback
+        ? (this._protos as protobuf.Root).lookupService(
+            'google.cloud.servicedirectory.v1.LookupService',
+          )
+        : // eslint-disable-next-line @typescript-eslint/no-explicit-any
           (this._protos as any).google.cloud.servicedirectory.v1.LookupService,
-        this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>;
+      this._opts,
+      this._providedCustomServicePath,
+    ) as Promise<{ [method: string]: Function }>;
 
     // Iterate over each of the methods that the service provides
     // and create an API call method for each.
-    const lookupServiceStubMethods =
-        ['resolveService'];
+    const lookupServiceStubMethods = ['resolveService'];
     for (const methodName of lookupServiceStubMethods) {
       const callPromise = this.lookupServiceStub.then(
-        stub => (...args: Array<{}>) => {
-          if (this._terminated) {
-            return Promise.reject('The client has already been closed.');
-          }
-          const func = stub[methodName];
-          return func.apply(stub, args);
-        },
-        (err: Error|null|undefined) => () => {
+        (stub) =>
+          (...args: Array<{}>) => {
+            if (this._terminated) {
+              return Promise.reject('The client has already been closed.');
+            }
+            const func = stub[methodName];
+            return func.apply(stub, args);
+          },
+        (err: Error | null | undefined) => () => {
           throw err;
-        });
+        },
+      );
 
-      const descriptor =
-        undefined;
+      const descriptor = undefined;
       const apiCall = this._gaxModule.createApiCall(
         callPromise,
         this._defaults[methodName],
         descriptor,
-        this._opts.fallback
+        this._opts.fallback,
       );
 
       this.innerApiCalls[methodName] = apiCall;
@@ -272,8 +303,14 @@ export class LookupServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get servicePath() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static servicePath is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicedirectory.googleapis.com';
   }
@@ -284,8 +321,14 @@ export class LookupServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get apiEndpoint() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static apiEndpoint is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicedirectory.googleapis.com';
   }
@@ -316,9 +359,7 @@ export class LookupServiceClient {
    * @returns {string[]} List of default scopes.
    */
   static get scopes() {
-    return [
-      'https://www.googleapis.com/auth/cloud-platform'
-    ];
+    return ['https://www.googleapis.com/auth/cloud-platform'];
   }
 
   getProjectId(): Promise<string>;
@@ -327,8 +368,9 @@ export class LookupServiceClient {
    * Return the project ID used by this class.
    * @returns {Promise} A promise that resolves to string containing the project ID.
    */
-  getProjectId(callback?: Callback<string, undefined, undefined>):
-      Promise<string>|void {
+  getProjectId(
+    callback?: Callback<string, undefined, undefined>,
+  ): Promise<string> | void {
     if (callback) {
       this.auth.getProjectId(callback);
       return;
@@ -339,145 +381,194 @@ export class LookupServiceClient {
   // -------------------
   // -- Service calls --
   // -------------------
-/**
- * Returns a {@link protos.google.cloud.servicedirectory.v1.Service|service} and its
- * associated endpoints.
- * Resolving a service is not considered an active developer method.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the service to resolve.
- * @param {number} [request.maxEndpoints]
- *   Optional. The maximum number of endpoints to return. Defaults to 25.
- *   Maximum is 100. If a value less than one is specified, the Default is used.
- *   If a value greater than the Maximum is specified, the Maximum is used.
- * @param {string} [request.endpointFilter]
- *   Optional. The filter applied to the endpoints of the resolved service.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `address`, `port`, or `annotations.<key>` for
- *       map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `annotations.owner` returns endpoints that have a annotation with the
- *       key `owner`, this is the same as `annotations:owner`
- *   *   `annotations.protocol=gRPC` returns endpoints that have key/value
- *       `protocol=gRPC`
- *   *   `address=192.108.1.105` returns endpoints that have this address
- *   *   `port>8080` returns endpoints that have port number larger than 8080
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
- *       returns endpoints that have name that is alphabetically later than the
- *       string, so "endpoint-e" is returned but "endpoint-a" is not
- *   *
- *   `name=projects/my-project/locations/us-central1/namespaces/my-namespace/services/my-service/endpoints/ep-1`
- *        returns the endpoint that has an endpoint_id equal to `ep-1`
- *   *   `annotations.owner!=sd AND annotations.foo=bar` returns endpoints that
- *       have `owner` in annotation key but value is not `sd` AND have
- *       key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any endpoint, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.ResolveServiceResponse|ResolveServiceResponse}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/lookup_service.resolve_service.js</caption>
- * region_tag:servicedirectory_v1_generated_LookupService_ResolveService_async
- */
+  /**
+   * Returns a {@link protos.google.cloud.servicedirectory.v1.Service|service} and its
+   * associated endpoints.
+   * Resolving a service is not considered an active developer method.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the service to resolve.
+   * @param {number} [request.maxEndpoints]
+   *   Optional. The maximum number of endpoints to return. Defaults to 25.
+   *   Maximum is 100. If a value less than one is specified, the Default is used.
+   *   If a value greater than the Maximum is specified, the Maximum is used.
+   * @param {string} [request.endpointFilter]
+   *   Optional. The filter applied to the endpoints of the resolved service.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `address`, `port`, or `annotations.<key>` for
+   *       map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `annotations.owner` returns endpoints that have a annotation with the
+   *       key `owner`, this is the same as `annotations:owner`
+   *   *   `annotations.protocol=gRPC` returns endpoints that have key/value
+   *       `protocol=gRPC`
+   *   *   `address=192.108.1.105` returns endpoints that have this address
+   *   *   `port>8080` returns endpoints that have port number larger than 8080
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
+   *       returns endpoints that have name that is alphabetically later than the
+   *       string, so "endpoint-e" is returned but "endpoint-a" is not
+   *   *
+   *   `name=projects/my-project/locations/us-central1/namespaces/my-namespace/services/my-service/endpoints/ep-1`
+   *        returns the endpoint that has an endpoint_id equal to `ep-1`
+   *   *   `annotations.owner!=sd AND annotations.foo=bar` returns endpoints that
+   *       have `owner` in annotation key but value is not `sd` AND have
+   *       key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any endpoint, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.ResolveServiceResponse|ResolveServiceResponse}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/lookup_service.resolve_service.js</caption>
+   * region_tag:servicedirectory_v1_generated_LookupService_ResolveService_async
+   */
   resolveService(
-      request?: protos.google.cloud.servicedirectory.v1.IResolveServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
-        protos.google.cloud.servicedirectory.v1.IResolveServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IResolveServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
+      (
+        | protos.google.cloud.servicedirectory.v1.IResolveServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   resolveService(
-      request: protos.google.cloud.servicedirectory.v1.IResolveServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
-          protos.google.cloud.servicedirectory.v1.IResolveServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IResolveServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
+      | protos.google.cloud.servicedirectory.v1.IResolveServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   resolveService(
-      request: protos.google.cloud.servicedirectory.v1.IResolveServiceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
-          protos.google.cloud.servicedirectory.v1.IResolveServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IResolveServiceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
+      | protos.google.cloud.servicedirectory.v1.IResolveServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   resolveService(
-      request?: protos.google.cloud.servicedirectory.v1.IResolveServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
-          protos.google.cloud.servicedirectory.v1.IResolveServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IResolveServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
-          protos.google.cloud.servicedirectory.v1.IResolveServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
-        protos.google.cloud.servicedirectory.v1.IResolveServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IResolveServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
+      | protos.google.cloud.servicedirectory.v1.IResolveServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
+      (
+        | protos.google.cloud.servicedirectory.v1.IResolveServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('resolveService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
-        protos.google.cloud.servicedirectory.v1.IResolveServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
+          | protos.google.cloud.servicedirectory.v1.IResolveServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('resolveService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.resolveService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
-        protos.google.cloud.servicedirectory.v1.IResolveServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('resolveService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .resolveService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.IResolveServiceResponse,
+          (
+            | protos.google.cloud.servicedirectory.v1.IResolveServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('resolveService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
 
-/**
+  /**
    * Gets information about a location.
    *
    * @param {Object} request
@@ -512,12 +603,11 @@ export class LookupServiceClient {
       | null
       | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.getLocation(request, options, callback);
   }
-
-/**
+  /**
    * Lists information about the supported locations for this service. Returns an iterable object.
    *
    * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
@@ -550,7 +640,7 @@ export class LookupServiceClient {
    */
   listLocationsAsync(
     request: LocationProtos.google.cloud.location.IListLocationsRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): AsyncIterable<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.listLocationsAsync(request, options);
   }
@@ -569,7 +659,13 @@ export class LookupServiceClient {
    * @param {string} endpoint
    * @returns {string} Resource name string.
    */
-  endpointPath(project:string,location:string,namespace:string,service:string,endpoint:string) {
+  endpointPath(
+    project: string,
+    location: string,
+    namespace: string,
+    service: string,
+    endpoint: string,
+  ) {
     return this.pathTemplates.endpointPathTemplate.render({
       project: project,
       location: location,
@@ -609,7 +705,8 @@ export class LookupServiceClient {
    * @returns {string} A string representing the namespace.
    */
   matchNamespaceFromEndpointName(endpointName: string) {
-    return this.pathTemplates.endpointPathTemplate.match(endpointName).namespace;
+    return this.pathTemplates.endpointPathTemplate.match(endpointName)
+      .namespace;
   }
 
   /**
@@ -642,7 +739,7 @@ export class LookupServiceClient {
    * @param {string} namespace
    * @returns {string} Resource name string.
    */
-  namespacePath(project:string,location:string,namespace:string) {
+  namespacePath(project: string, location: string, namespace: string) {
     return this.pathTemplates.namespacePathTemplate.render({
       project: project,
       location: location,
@@ -658,7 +755,8 @@ export class LookupServiceClient {
    * @returns {string} A string representing the project.
    */
   matchProjectFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).project;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .project;
   }
 
   /**
@@ -669,7 +767,8 @@ export class LookupServiceClient {
    * @returns {string} A string representing the location.
    */
   matchLocationFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).location;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .location;
   }
 
   /**
@@ -680,7 +779,8 @@ export class LookupServiceClient {
    * @returns {string} A string representing the namespace.
    */
   matchNamespaceFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).namespace;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .namespace;
   }
 
   /**
@@ -692,7 +792,12 @@ export class LookupServiceClient {
    * @param {string} service
    * @returns {string} Resource name string.
    */
-  servicePath(project:string,location:string,namespace:string,service:string) {
+  servicePath(
+    project: string,
+    location: string,
+    namespace: string,
+    service: string,
+  ) {
     return this.pathTemplates.servicePathTemplate.render({
       project: project,
       location: location,
@@ -753,13 +858,15 @@ export class LookupServiceClient {
    */
   close(): Promise<void> {
     if (this.lookupServiceStub && !this._terminated) {
-      return this.lookupServiceStub.then(stub => {
+      return this.lookupServiceStub.then((stub) => {
         this._log.info('ending gRPC channel');
         this._terminated = true;
         stub.close();
-        this.locationsClient.close().catch(err => {throw err});
+        this.locationsClient.close().catch((err) => {
+          throw err;
+        });
       });
     }
     return Promise.resolve();
   }
-}
\ No newline at end of file
+}
diff --git a/packages/google-cloud-servicedirectory/src/v1/registration_service_client.ts b/packages/google-cloud-servicedirectory/src/v1/registration_service_client.ts
index 1dc6658962ca..7b3dedfc7c74 100644
--- a/packages/google-cloud-servicedirectory/src/v1/registration_service_client.ts
+++ b/packages/google-cloud-servicedirectory/src/v1/registration_service_client.ts
@@ -18,11 +18,20 @@
 
 /* global window */
 import type * as gax from 'google-gax';
-import type {Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback, GaxCall, LocationsClient, LocationProtos} from 'google-gax';
-import {Transform} from 'stream';
+import type {
+  Callback,
+  CallOptions,
+  Descriptors,
+  ClientOptions,
+  PaginationCallback,
+  GaxCall,
+  LocationsClient,
+  LocationProtos,
+} from 'google-gax';
+import { Transform } from 'stream';
 import * as protos from '../../protos/protos';
 import jsonProtos = require('../../protos/protos.json');
-import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax';
+import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax';
 
 /**
  * Client JSON configuration object, loaded from
@@ -58,7 +67,7 @@ export class RegistrationServiceClient {
   private _gaxModule: typeof gax | typeof gax.fallback;
   private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
   private _protos: {};
-  private _defaults: {[method: string]: gax.CallSettings};
+  private _defaults: { [method: string]: gax.CallSettings };
   private _universeDomain: string;
   private _servicePath: string;
   private _log = logging.log('service-directory');
@@ -71,10 +80,10 @@ export class RegistrationServiceClient {
     batching: {},
   };
   warn: (code: string, message: string, warnType?: string) => void;
-  innerApiCalls: {[name: string]: Function};
+  innerApiCalls: { [name: string]: Function };
   locationsClient: LocationsClient;
-  pathTemplates: {[name: string]: gax.PathTemplate};
-  registrationServiceStub?: Promise<{[name: string]: Function}>;
+  pathTemplates: { [name: string]: gax.PathTemplate };
+  registrationServiceStub?: Promise<{ [name: string]: Function }>;
 
   /**
    * Construct an instance of RegistrationServiceClient.
@@ -115,21 +124,42 @@ export class RegistrationServiceClient {
    *     const client = new RegistrationServiceClient({fallback: true}, gax);
    *     ```
    */
-  constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) {
+  constructor(
+    opts?: ClientOptions,
+    gaxInstance?: typeof gax | typeof gax.fallback,
+  ) {
     // Ensure that options include all the required fields.
     const staticMembers = this.constructor as typeof RegistrationServiceClient;
-    if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) {
-      throw new Error('Please set either universe_domain or universeDomain, but not both.');
+    if (
+      opts?.universe_domain &&
+      opts?.universeDomain &&
+      opts?.universe_domain !== opts?.universeDomain
+    ) {
+      throw new Error(
+        'Please set either universe_domain or universeDomain, but not both.',
+      );
     }
-    const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined;
-    this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com';
+    const universeDomainEnvVar =
+      typeof process === 'object' && typeof process.env === 'object'
+        ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']
+        : undefined;
+    this._universeDomain =
+      opts?.universeDomain ??
+      opts?.universe_domain ??
+      universeDomainEnvVar ??
+      'googleapis.com';
     this._servicePath = 'servicedirectory.' + this._universeDomain;
-    const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath;
-    this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint);
+    const servicePath =
+      opts?.servicePath || opts?.apiEndpoint || this._servicePath;
+    this._providedCustomServicePath = !!(
+      opts?.servicePath || opts?.apiEndpoint
+    );
     const port = opts?.port || staticMembers.port;
     const clientConfig = opts?.clientConfig ?? {};
-    const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function');
-    opts = Object.assign({servicePath, port, clientConfig, fallback}, opts);
+    const fallback =
+      opts?.fallback ??
+      (typeof window !== 'undefined' && typeof window?.fetch === 'function');
+    opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts);
 
     // Request numeric enum values if REST transport is used.
     opts.numericEnums = true;
@@ -154,7 +184,7 @@ export class RegistrationServiceClient {
     this._opts = opts;
 
     // Save the auth object to the client, for use by other methods.
-    this.auth = (this._gaxGrpc.auth as gax.GoogleAuth);
+    this.auth = this._gaxGrpc.auth as gax.GoogleAuth;
 
     // Set useJWTAccessWithScope on the auth object.
     this.auth.useJWTAccessWithScope = true;
@@ -168,15 +198,11 @@ export class RegistrationServiceClient {
     }
     this.locationsClient = new this._gaxModule.LocationsClient(
       this._gaxGrpc,
-      opts
+      opts,
     );
-  
 
     // Determine the client header string.
-    const clientHeader = [
-      `gax/${this._gaxModule.version}`,
-      `gapic/${version}`,
-    ];
+    const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
     if (typeof process === 'object' && 'versions' in process) {
       clientHeader.push(`gl-node/${process.versions.node}`);
     } else {
@@ -198,16 +224,16 @@ export class RegistrationServiceClient {
     // Create useful helper objects for these.
     this.pathTemplates = {
       endpointPathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}/endpoints/{endpoint}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}/endpoints/{endpoint}',
       ),
       locationPathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}'
+        'projects/{project}/locations/{location}',
       ),
       namespacePathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}',
       ),
       servicePathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}',
       ),
     };
 
@@ -215,18 +241,30 @@ export class RegistrationServiceClient {
     // (e.g. 50 results at a time, with tokens to get subsequent
     // pages). Denote the keys used for pagination and results.
     this.descriptors.page = {
-      listNamespaces:
-          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'namespaces'),
-      listServices:
-          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'services'),
-      listEndpoints:
-          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'endpoints')
+      listNamespaces: new this._gaxModule.PageDescriptor(
+        'pageToken',
+        'nextPageToken',
+        'namespaces',
+      ),
+      listServices: new this._gaxModule.PageDescriptor(
+        'pageToken',
+        'nextPageToken',
+        'services',
+      ),
+      listEndpoints: new this._gaxModule.PageDescriptor(
+        'pageToken',
+        'nextPageToken',
+        'endpoints',
+      ),
     };
 
     // Put together the default options sent with requests.
     this._defaults = this._gaxGrpc.constructSettings(
-        'google.cloud.servicedirectory.v1.RegistrationService', gapicConfig as gax.ClientConfig,
-        opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')});
+      'google.cloud.servicedirectory.v1.RegistrationService',
+      gapicConfig as gax.ClientConfig,
+      opts.clientConfig || {},
+      { 'x-goog-api-client': clientHeader.join(' ') },
+    );
 
     // Set up a dictionary of "inner API calls"; the core implementation
     // of calling the API is handled in `google-gax`, with this code
@@ -257,37 +295,60 @@ export class RegistrationServiceClient {
     // Put together the "service stub" for
     // google.cloud.servicedirectory.v1.RegistrationService.
     this.registrationServiceStub = this._gaxGrpc.createStub(
-        this._opts.fallback ?
-          (this._protos as protobuf.Root).lookupService('google.cloud.servicedirectory.v1.RegistrationService') :
-          // eslint-disable-next-line @typescript-eslint/no-explicit-any
-          (this._protos as any).google.cloud.servicedirectory.v1.RegistrationService,
-        this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>;
+      this._opts.fallback
+        ? (this._protos as protobuf.Root).lookupService(
+            'google.cloud.servicedirectory.v1.RegistrationService',
+          )
+        : // eslint-disable-next-line @typescript-eslint/no-explicit-any
+          (this._protos as any).google.cloud.servicedirectory.v1
+            .RegistrationService,
+      this._opts,
+      this._providedCustomServicePath,
+    ) as Promise<{ [method: string]: Function }>;
 
     // Iterate over each of the methods that the service provides
     // and create an API call method for each.
-    const registrationServiceStubMethods =
-        ['createNamespace', 'listNamespaces', 'getNamespace', 'updateNamespace', 'deleteNamespace', 'createService', 'listServices', 'getService', 'updateService', 'deleteService', 'createEndpoint', 'listEndpoints', 'getEndpoint', 'updateEndpoint', 'deleteEndpoint', 'getIamPolicy', 'setIamPolicy', 'testIamPermissions'];
+    const registrationServiceStubMethods = [
+      'createNamespace',
+      'listNamespaces',
+      'getNamespace',
+      'updateNamespace',
+      'deleteNamespace',
+      'createService',
+      'listServices',
+      'getService',
+      'updateService',
+      'deleteService',
+      'createEndpoint',
+      'listEndpoints',
+      'getEndpoint',
+      'updateEndpoint',
+      'deleteEndpoint',
+      'getIamPolicy',
+      'setIamPolicy',
+      'testIamPermissions',
+    ];
     for (const methodName of registrationServiceStubMethods) {
       const callPromise = this.registrationServiceStub.then(
-        stub => (...args: Array<{}>) => {
-          if (this._terminated) {
-            return Promise.reject('The client has already been closed.');
-          }
-          const func = stub[methodName];
-          return func.apply(stub, args);
-        },
-        (err: Error|null|undefined) => () => {
+        (stub) =>
+          (...args: Array<{}>) => {
+            if (this._terminated) {
+              return Promise.reject('The client has already been closed.');
+            }
+            const func = stub[methodName];
+            return func.apply(stub, args);
+          },
+        (err: Error | null | undefined) => () => {
           throw err;
-        });
+        },
+      );
 
-      const descriptor =
-        this.descriptors.page[methodName] ||
-        undefined;
+      const descriptor = this.descriptors.page[methodName] || undefined;
       const apiCall = this._gaxModule.createApiCall(
         callPromise,
         this._defaults[methodName],
         descriptor,
-        this._opts.fallback
+        this._opts.fallback,
       );
 
       this.innerApiCalls[methodName] = apiCall;
@@ -302,8 +363,14 @@ export class RegistrationServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get servicePath() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static servicePath is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicedirectory.googleapis.com';
   }
@@ -314,8 +381,14 @@ export class RegistrationServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get apiEndpoint() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static apiEndpoint is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicedirectory.googleapis.com';
   }
@@ -346,9 +419,7 @@ export class RegistrationServiceClient {
    * @returns {string[]} List of default scopes.
    */
   static get scopes() {
-    return [
-      'https://www.googleapis.com/auth/cloud-platform'
-    ];
+    return ['https://www.googleapis.com/auth/cloud-platform'];
   }
 
   getProjectId(): Promise<string>;
@@ -357,8 +428,9 @@ export class RegistrationServiceClient {
    * Return the project ID used by this class.
    * @returns {Promise} A promise that resolves to string containing the project ID.
    */
-  getProjectId(callback?: Callback<string, undefined, undefined>):
-      Promise<string>|void {
+  getProjectId(
+    callback?: Callback<string, undefined, undefined>,
+  ): Promise<string> | void {
     if (callback) {
       this.auth.getProjectId(callback);
       return;
@@ -369,1601 +441,2268 @@ export class RegistrationServiceClient {
   // -------------------
   // -- Service calls --
   // -------------------
-/**
- * Creates a namespace, and returns the new namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the project and location the namespace
- *   will be created in.
- * @param {string} request.namespaceId
- *   Required. The Resource ID must be 1-63 characters long, and comply with
- *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
- *   Specifically, the name must be 1-63 characters long and match the regular
- *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
- *   character must be a lowercase letter, and all following characters must
- *   be a dash, lowercase letter, or digit, except the last character, which
- *   cannot be a dash.
- * @param {google.cloud.servicedirectory.v1.Namespace} request.namespace
- *   Required. A namespace with initial fields set.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.create_namespace.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_CreateNamespace_async
- */
+  /**
+   * Creates a namespace, and returns the new namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the project and location the namespace
+   *   will be created in.
+   * @param {string} request.namespaceId
+   *   Required. The Resource ID must be 1-63 characters long, and comply with
+   *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
+   *   Specifically, the name must be 1-63 characters long and match the regular
+   *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
+   *   character must be a lowercase letter, and all following characters must
+   *   be a dash, lowercase letter, or digit, except the last character, which
+   *   cannot be a dash.
+   * @param {google.cloud.servicedirectory.v1.Namespace} request.namespace
+   *   Required. A namespace with initial fields set.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.create_namespace.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_CreateNamespace_async
+   */
   createNamespace(
-      request?: protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   createNamespace(
-      request: protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      | protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createNamespace(
-      request: protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      | protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createNamespace(
-      request?: protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      | protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('createNamespace request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.INamespace,
+          | protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('createNamespace response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.createNamespace(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('createNamespace response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .createNamespace(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.INamespace,
+          (
+            | protos.google.cloud.servicedirectory.v1.ICreateNamespaceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('createNamespace response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Gets a namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the namespace to retrieve.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.get_namespace.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_GetNamespace_async
- */
+  /**
+   * Gets a namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the namespace to retrieve.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.get_namespace.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_GetNamespace_async
+   */
   getNamespace(
-      request?: protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   getNamespace(
-      request: protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      | protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getNamespace(
-      request: protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      | protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getNamespace(
-      request?: protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      | protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getNamespace request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.INamespace,
+          | protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getNamespace response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getNamespace(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getNamespace response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getNamespace(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.INamespace,
+          (
+            | protos.google.cloud.servicedirectory.v1.IGetNamespaceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('getNamespace response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Updates a namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {google.cloud.servicedirectory.v1.Namespace} request.namespace
- *   Required. The updated namespace.
- * @param {google.protobuf.FieldMask} request.updateMask
- *   Required. List of fields to be updated in this request.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.update_namespace.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_UpdateNamespace_async
- */
+  /**
+   * Updates a namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {google.cloud.servicedirectory.v1.Namespace} request.namespace
+   *   Required. The updated namespace.
+   * @param {google.protobuf.FieldMask} request.updateMask
+   *   Required. List of fields to be updated in this request.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.update_namespace.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_UpdateNamespace_async
+   */
   updateNamespace(
-      request?: protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   updateNamespace(
-      request: protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      | protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateNamespace(
-      request: protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      | protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateNamespace(
-      request?: protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.INamespace,
-          protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      | protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'namespace.name': request.namespace!.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        'namespace.name': request.namespace!.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('updateNamespace request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.INamespace,
+          | protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('updateNamespace response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.updateNamespace(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.INamespace,
-        protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('updateNamespace response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .updateNamespace(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.INamespace,
+          (
+            | protos.google.cloud.servicedirectory.v1.IUpdateNamespaceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('updateNamespace response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Deletes a namespace. This also deletes all services and endpoints in
- * the namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the namespace to delete.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.delete_namespace.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_DeleteNamespace_async
- */
+  /**
+   * Deletes a namespace. This also deletes all services and endpoints in
+   * the namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the namespace to delete.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.delete_namespace.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_DeleteNamespace_async
+   */
   deleteNamespace(
-      request?: protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   deleteNamespace(
-      request: protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteNamespace(
-      request: protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteNamespace(
-      request?: protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('deleteNamespace request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.protobuf.IEmpty,
+          | protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('deleteNamespace response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.deleteNamespace(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('deleteNamespace response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .deleteNamespace(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.protobuf.IEmpty,
+          (
+            | protos.google.cloud.servicedirectory.v1.IDeleteNamespaceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('deleteNamespace response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Creates a service, and returns the new service.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the namespace this service will belong to.
- * @param {string} request.serviceId
- *   Required. The Resource ID must be 1-63 characters long, and comply with
- *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
- *   Specifically, the name must be 1-63 characters long and match the regular
- *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
- *   character must be a lowercase letter, and all following characters must
- *   be a dash, lowercase letter, or digit, except the last character, which
- *   cannot be a dash.
- * @param {google.cloud.servicedirectory.v1.Service} request.service
- *   Required. A service  with initial fields set.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Service|Service}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.create_service.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_CreateService_async
- */
+  /**
+   * Creates a service, and returns the new service.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the namespace this service will belong to.
+   * @param {string} request.serviceId
+   *   Required. The Resource ID must be 1-63 characters long, and comply with
+   *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
+   *   Specifically, the name must be 1-63 characters long and match the regular
+   *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
+   *   character must be a lowercase letter, and all following characters must
+   *   be a dash, lowercase letter, or digit, except the last character, which
+   *   cannot be a dash.
+   * @param {google.cloud.servicedirectory.v1.Service} request.service
+   *   Required. A service  with initial fields set.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Service|Service}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.create_service.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_CreateService_async
+   */
   createService(
-      request?: protos.google.cloud.servicedirectory.v1.ICreateServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.ICreateServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.ICreateServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IService,
+      protos.google.cloud.servicedirectory.v1.ICreateServiceRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   createService(
-      request: protos.google.cloud.servicedirectory.v1.ICreateServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.ICreateServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.ICreateServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IService,
+      | protos.google.cloud.servicedirectory.v1.ICreateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createService(
-      request: protos.google.cloud.servicedirectory.v1.ICreateServiceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.ICreateServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.ICreateServiceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IService,
+      | protos.google.cloud.servicedirectory.v1.ICreateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createService(
-      request?: protos.google.cloud.servicedirectory.v1.ICreateServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.ICreateServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.ICreateServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.ICreateServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.ICreateServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.ICreateServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.IService,
+      | protos.google.cloud.servicedirectory.v1.ICreateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IService,
+      protos.google.cloud.servicedirectory.v1.ICreateServiceRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('createService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.ICreateServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.IService,
+          | protos.google.cloud.servicedirectory.v1.ICreateServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('createService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.createService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.ICreateServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('createService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .createService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.IService,
+          (
+            | protos.google.cloud.servicedirectory.v1.ICreateServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('createService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Gets a service.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the service to get.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Service|Service}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.get_service.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_GetService_async
- */
+  /**
+   * Gets a service.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the service to get.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Service|Service}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.get_service.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_GetService_async
+   */
   getService(
-      request?: protos.google.cloud.servicedirectory.v1.IGetServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.IGetServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IGetServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IService,
+      protos.google.cloud.servicedirectory.v1.IGetServiceRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   getService(
-      request: protos.google.cloud.servicedirectory.v1.IGetServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.IGetServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IGetServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IService,
+      | protos.google.cloud.servicedirectory.v1.IGetServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getService(
-      request: protos.google.cloud.servicedirectory.v1.IGetServiceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.IGetServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IGetServiceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IService,
+      | protos.google.cloud.servicedirectory.v1.IGetServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getService(
-      request?: protos.google.cloud.servicedirectory.v1.IGetServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.IGetServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IGetServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.IGetServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.IGetServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IGetServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.IService,
+      | protos.google.cloud.servicedirectory.v1.IGetServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IService,
+      protos.google.cloud.servicedirectory.v1.IGetServiceRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.IGetServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.IService,
+          | protos.google.cloud.servicedirectory.v1.IGetServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.IGetServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.IService,
+          (
+            | protos.google.cloud.servicedirectory.v1.IGetServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('getService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Updates a service.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {google.cloud.servicedirectory.v1.Service} request.service
- *   Required. The updated service.
- * @param {google.protobuf.FieldMask} request.updateMask
- *   Required. List of fields to be updated in this request.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Service|Service}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.update_service.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_UpdateService_async
- */
+  /**
+   * Updates a service.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {google.cloud.servicedirectory.v1.Service} request.service
+   *   Required. The updated service.
+   * @param {google.protobuf.FieldMask} request.updateMask
+   *   Required. List of fields to be updated in this request.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Service|Service}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.update_service.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_UpdateService_async
+   */
   updateService(
-      request?: protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IService,
+      protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   updateService(
-      request: protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IService,
+      | protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateService(
-      request: protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IService,
+      | protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateService(
-      request?: protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.IService,
-          protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.IService,
+      | protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IService,
+      protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'service.name': request.service!.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        'service.name': request.service!.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('updateService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.IService,
+          | protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('updateService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.updateService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.IService,
-        protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('updateService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .updateService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.IService,
+          (
+            | protos.google.cloud.servicedirectory.v1.IUpdateServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('updateService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Deletes a service. This also deletes all endpoints associated with
- * the service.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the service to delete.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.delete_service.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_DeleteService_async
- */
+  /**
+   * Deletes a service. This also deletes all endpoints associated with
+   * the service.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the service to delete.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.delete_service.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_DeleteService_async
+   */
   deleteService(
-      request?: protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   deleteService(
-      request: protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteService(
-      request: protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteService(
-      request?: protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('deleteService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.protobuf.IEmpty,
+          | protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('deleteService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.deleteService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('deleteService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .deleteService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.protobuf.IEmpty,
+          (
+            | protos.google.cloud.servicedirectory.v1.IDeleteServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('deleteService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Creates an endpoint, and returns the new endpoint.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the service that this endpoint provides.
- * @param {string} request.endpointId
- *   Required. The Resource ID must be 1-63 characters long, and comply with
- *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
- *   Specifically, the name must be 1-63 characters long and match the regular
- *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
- *   character must be a lowercase letter, and all following characters must
- *   be a dash, lowercase letter, or digit, except the last character, which
- *   cannot be a dash.
- * @param {google.cloud.servicedirectory.v1.Endpoint} request.endpoint
- *   Required. A endpoint with initial fields set.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.create_endpoint.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_CreateEndpoint_async
- */
+  /**
+   * Creates an endpoint, and returns the new endpoint.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the service that this endpoint provides.
+   * @param {string} request.endpointId
+   *   Required. The Resource ID must be 1-63 characters long, and comply with
+   *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
+   *   Specifically, the name must be 1-63 characters long and match the regular
+   *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
+   *   character must be a lowercase letter, and all following characters must
+   *   be a dash, lowercase letter, or digit, except the last character, which
+   *   cannot be a dash.
+   * @param {google.cloud.servicedirectory.v1.Endpoint} request.endpoint
+   *   Required. A endpoint with initial fields set.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.create_endpoint.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_CreateEndpoint_async
+   */
   createEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   createEndpoint(
-      request: protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createEndpoint(
-      request: protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('createEndpoint request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.IEndpoint,
+          | protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('createEndpoint response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.createEndpoint(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('createEndpoint response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .createEndpoint(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.IEndpoint,
+          (
+            | protos.google.cloud.servicedirectory.v1.ICreateEndpointRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('createEndpoint response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Gets an endpoint.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the endpoint to get.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.get_endpoint.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_GetEndpoint_async
- */
+  /**
+   * Gets an endpoint.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the endpoint to get.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.get_endpoint.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_GetEndpoint_async
+   */
   getEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1.IGetEndpointRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.IGetEndpointRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IGetEndpointRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      protos.google.cloud.servicedirectory.v1.IGetEndpointRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   getEndpoint(
-      request: protos.google.cloud.servicedirectory.v1.IGetEndpointRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.IGetEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IGetEndpointRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1.IGetEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getEndpoint(
-      request: protos.google.cloud.servicedirectory.v1.IGetEndpointRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.IGetEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IGetEndpointRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1.IGetEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1.IGetEndpointRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.IGetEndpointRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IGetEndpointRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.IGetEndpointRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.IGetEndpointRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IGetEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1.IGetEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      protos.google.cloud.servicedirectory.v1.IGetEndpointRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getEndpoint request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.IGetEndpointRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.IEndpoint,
+          | protos.google.cloud.servicedirectory.v1.IGetEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getEndpoint response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getEndpoint(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.IGetEndpointRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getEndpoint response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getEndpoint(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.IEndpoint,
+          (
+            | protos.google.cloud.servicedirectory.v1.IGetEndpointRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('getEndpoint response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Updates an endpoint.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {google.cloud.servicedirectory.v1.Endpoint} request.endpoint
- *   Required. The updated endpoint.
- * @param {google.protobuf.FieldMask} request.updateMask
- *   Required. List of fields to be updated in this request.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.update_endpoint.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_UpdateEndpoint_async
- */
+  /**
+   * Updates an endpoint.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {google.cloud.servicedirectory.v1.Endpoint} request.endpoint
+   *   Required. The updated endpoint.
+   * @param {google.protobuf.FieldMask} request.updateMask
+   *   Required. List of fields to be updated in this request.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.update_endpoint.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_UpdateEndpoint_async
+   */
   updateEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   updateEndpoint(
-      request: protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateEndpoint(
-      request: protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'endpoint.name': request.endpoint!.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        'endpoint.name': request.endpoint!.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('updateEndpoint request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1.IEndpoint,
+          | protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('updateEndpoint response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.updateEndpoint(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('updateEndpoint response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .updateEndpoint(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1.IEndpoint,
+          (
+            | protos.google.cloud.servicedirectory.v1.IUpdateEndpointRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('updateEndpoint response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Deletes an endpoint.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the endpoint to delete.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.delete_endpoint.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_DeleteEndpoint_async
- */
+  /**
+   * Deletes an endpoint.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the endpoint to delete.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.delete_endpoint.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_DeleteEndpoint_async
+   */
   deleteEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   deleteEndpoint(
-      request: protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteEndpoint(
-      request: protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('deleteEndpoint request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.protobuf.IEmpty,
+          | protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('deleteEndpoint response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.deleteEndpoint(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('deleteEndpoint response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .deleteEndpoint(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.protobuf.IEmpty,
+          (
+            | protos.google.cloud.servicedirectory.v1.IDeleteEndpointRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('deleteEndpoint response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Gets the IAM Policy for a resource (namespace or service only).
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.resource
- *   REQUIRED: The resource for which the policy is being requested.
- *   See the operation documentation for the appropriate value for this field.
- * @param {google.iam.v1.GetPolicyOptions} request.options
- *   OPTIONAL: A `GetPolicyOptions` object for specifying options to
- *   `GetIamPolicy`.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.iam.v1.Policy|Policy}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.get_iam_policy.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_GetIamPolicy_async
- */
+  /**
+   * Gets the IAM Policy for a resource (namespace or service only).
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.resource
+   *   REQUIRED: The resource for which the policy is being requested.
+   *   See the operation documentation for the appropriate value for this field.
+   * @param {google.iam.v1.GetPolicyOptions} request.options
+   *   OPTIONAL: A `GetPolicyOptions` object for specifying options to
+   *   `GetIamPolicy`.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.iam.v1.Policy|Policy}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.get_iam_policy.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_GetIamPolicy_async
+   */
   getIamPolicy(
-      request?: protos.google.iam.v1.IGetIamPolicyRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.IGetIamPolicyRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.iam.v1.IGetIamPolicyRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   getIamPolicy(
-      request: protos.google.iam.v1.IGetIamPolicyRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.IGetIamPolicyRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getIamPolicy(
-      request: protos.google.iam.v1.IGetIamPolicyRequest,
-      callback: Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.IGetIamPolicyRequest,
+    callback: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getIamPolicy(
-      request?: protos.google.iam.v1.IGetIamPolicyRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.iam.v1.IGetIamPolicyRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.IGetIamPolicyRequest|undefined, {}|undefined
-      ]>|void {
+          protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'resource': request.resource ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        resource: request.resource ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getIamPolicy request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.iam.v1.IPolicy,
+          protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getIamPolicy response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getIamPolicy(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.IGetIamPolicyRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getIamPolicy response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getIamPolicy(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.iam.v1.IPolicy,
+          protos.google.iam.v1.IGetIamPolicyRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('getIamPolicy response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Sets the IAM Policy for a resource (namespace or service only).
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.resource
- *   REQUIRED: The resource for which the policy is being specified.
- *   See the operation documentation for the appropriate value for this field.
- * @param {google.iam.v1.Policy} request.policy
- *   REQUIRED: The complete policy to be applied to the `resource`. The size of
- *   the policy is limited to a few 10s of KB. An empty policy is a
- *   valid policy but certain Cloud Platform services (such as Projects)
- *   might reject them.
- * @param {google.protobuf.FieldMask} request.updateMask
- *   OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
- *   the fields in the mask will be modified. If no mask is provided, the
- *   following default mask is used:
- *
- *   `paths: "bindings, etag"`
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.iam.v1.Policy|Policy}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.set_iam_policy.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_SetIamPolicy_async
- */
+  /**
+   * Sets the IAM Policy for a resource (namespace or service only).
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.resource
+   *   REQUIRED: The resource for which the policy is being specified.
+   *   See the operation documentation for the appropriate value for this field.
+   * @param {google.iam.v1.Policy} request.policy
+   *   REQUIRED: The complete policy to be applied to the `resource`. The size of
+   *   the policy is limited to a few 10s of KB. An empty policy is a
+   *   valid policy but certain Cloud Platform services (such as Projects)
+   *   might reject them.
+   * @param {google.protobuf.FieldMask} request.updateMask
+   *   OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
+   *   the fields in the mask will be modified. If no mask is provided, the
+   *   following default mask is used:
+   *
+   *   `paths: "bindings, etag"`
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.iam.v1.Policy|Policy}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.set_iam_policy.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_SetIamPolicy_async
+   */
   setIamPolicy(
-      request?: protos.google.iam.v1.ISetIamPolicyRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.ISetIamPolicyRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.iam.v1.ISetIamPolicyRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   setIamPolicy(
-      request: protos.google.iam.v1.ISetIamPolicyRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.ISetIamPolicyRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   setIamPolicy(
-      request: protos.google.iam.v1.ISetIamPolicyRequest,
-      callback: Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.ISetIamPolicyRequest,
+    callback: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   setIamPolicy(
-      request?: protos.google.iam.v1.ISetIamPolicyRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.iam.v1.ISetIamPolicyRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.ISetIamPolicyRequest|undefined, {}|undefined
-      ]>|void {
+          protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'resource': request.resource ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        resource: request.resource ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('setIamPolicy request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.iam.v1.IPolicy,
+          protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('setIamPolicy response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.setIamPolicy(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.ISetIamPolicyRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('setIamPolicy response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .setIamPolicy(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.iam.v1.IPolicy,
+          protos.google.iam.v1.ISetIamPolicyRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('setIamPolicy response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Tests IAM permissions for a resource (namespace or service only).
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.resource
- *   REQUIRED: The resource for which the policy detail is being requested.
- *   See the operation documentation for the appropriate value for this field.
- * @param {string[]} request.permissions
- *   The set of permissions to check for the `resource`. Permissions with
- *   wildcards (such as '*' or 'storage.*') are not allowed. For more
- *   information see
- *   [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.iam.v1.TestIamPermissionsResponse|TestIamPermissionsResponse}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.test_iam_permissions.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_TestIamPermissions_async
- */
+  /**
+   * Tests IAM permissions for a resource (namespace or service only).
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.resource
+   *   REQUIRED: The resource for which the policy detail is being requested.
+   *   See the operation documentation for the appropriate value for this field.
+   * @param {string[]} request.permissions
+   *   The set of permissions to check for the `resource`. Permissions with
+   *   wildcards (such as '*' or 'storage.*') are not allowed. For more
+   *   information see
+   *   [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.iam.v1.TestIamPermissionsResponse|TestIamPermissionsResponse}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.test_iam_permissions.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_TestIamPermissions_async
+   */
   testIamPermissions(
-      request?: protos.google.iam.v1.ITestIamPermissionsRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.iam.v1.ITestIamPermissionsResponse,
-        protos.google.iam.v1.ITestIamPermissionsRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.iam.v1.ITestIamPermissionsRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   testIamPermissions(
-      request: protos.google.iam.v1.ITestIamPermissionsRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.iam.v1.ITestIamPermissionsResponse,
-          protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.ITestIamPermissionsRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   testIamPermissions(
-      request: protos.google.iam.v1.ITestIamPermissionsRequest,
-      callback: Callback<
-          protos.google.iam.v1.ITestIamPermissionsResponse,
-          protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.ITestIamPermissionsRequest,
+    callback: Callback<
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   testIamPermissions(
-      request?: protos.google.iam.v1.ITestIamPermissionsRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.iam.v1.ITestIamPermissionsResponse,
-          protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.iam.v1.ITestIamPermissionsRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.iam.v1.ITestIamPermissionsResponse,
-          protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.iam.v1.ITestIamPermissionsResponse,
-        protos.google.iam.v1.ITestIamPermissionsRequest|undefined, {}|undefined
-      ]>|void {
+          protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'resource': request.resource ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        resource: request.resource ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('testIamPermissions request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.iam.v1.ITestIamPermissionsResponse,
-        protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.iam.v1.ITestIamPermissionsResponse,
+          protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('testIamPermissions response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.testIamPermissions(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.iam.v1.ITestIamPermissionsResponse,
-        protos.google.iam.v1.ITestIamPermissionsRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('testIamPermissions response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .testIamPermissions(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.iam.v1.ITestIamPermissionsResponse,
+          protos.google.iam.v1.ITestIamPermissionsRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('testIamPermissions response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
 
- /**
- * Lists all namespaces.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the project and location whose namespaces
- *   you'd like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name` or `labels.<key>` for map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `labels.owner` returns namespaces that have a label with the key
- *       `owner`, this is the same as `labels:owner`
- *   *   `labels.owner=sd` returns namespaces that have key/value
- *       `owner=sd`
- *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
- *       returns namespaces that have name that is alphabetically later than the
- *       string, so "namespace-e" is returned but "namespace-a" is not
- *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
- *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any namespaces, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed and will merge results from all the pages into this array.
- *   Note that it can affect your quota.
- *   We recommend using `listNamespacesAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Lists all namespaces.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the project and location whose namespaces
+   *   you'd like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name` or `labels.<key>` for map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `labels.owner` returns namespaces that have a label with the key
+   *       `owner`, this is the same as `labels:owner`
+   *   *   `labels.owner=sd` returns namespaces that have key/value
+   *       `owner=sd`
+   *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
+   *       returns namespaces that have name that is alphabetically later than the
+   *       string, so "namespace-e" is returned but "namespace-a" is not
+   *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
+   *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any namespaces, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed and will merge results from all the pages into this array.
+   *   Note that it can affect your quota.
+   *   We recommend using `listNamespacesAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listNamespaces(
-      request?: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.INamespace[],
-        protos.google.cloud.servicedirectory.v1.IListNamespacesRequest|null,
-        protos.google.cloud.servicedirectory.v1.IListNamespacesResponse
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.INamespace[],
+      protos.google.cloud.servicedirectory.v1.IListNamespacesRequest | null,
+      protos.google.cloud.servicedirectory.v1.IListNamespacesResponse,
+    ]
+  >;
   listNamespaces(
-      request: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-      options: CallOptions,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-          protos.google.cloud.servicedirectory.v1.IListNamespacesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.INamespace>): void;
+    request: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+    options: CallOptions,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+      | protos.google.cloud.servicedirectory.v1.IListNamespacesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1.INamespace
+    >,
+  ): void;
   listNamespaces(
-      request: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-          protos.google.cloud.servicedirectory.v1.IListNamespacesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.INamespace>): void;
+    request: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+      | protos.google.cloud.servicedirectory.v1.IListNamespacesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1.INamespace
+    >,
+  ): void;
   listNamespaces(
-      request?: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-      optionsOrCallback?: CallOptions|PaginationCallback<
-          protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-          protos.google.cloud.servicedirectory.v1.IListNamespacesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.INamespace>,
-      callback?: PaginationCallback<
+    request?: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | PaginationCallback<
           protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-          protos.google.cloud.servicedirectory.v1.IListNamespacesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.INamespace>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.INamespace[],
-        protos.google.cloud.servicedirectory.v1.IListNamespacesRequest|null,
-        protos.google.cloud.servicedirectory.v1.IListNamespacesResponse
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IListNamespacesResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1.INamespace
+        >,
+    callback?: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+      | protos.google.cloud.servicedirectory.v1.IListNamespacesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1.INamespace
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.INamespace[],
+      protos.google.cloud.servicedirectory.v1.IListNamespacesRequest | null,
+      protos.google.cloud.servicedirectory.v1.IListNamespacesResponse,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: PaginationCallback<
-      protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-      protos.google.cloud.servicedirectory.v1.IListNamespacesResponse|null|undefined,
-      protos.google.cloud.servicedirectory.v1.INamespace>|undefined = callback
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+          | protos.google.cloud.servicedirectory.v1.IListNamespacesResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1.INamespace
+        >
+      | undefined = callback
       ? (error, values, nextPageRequest, rawResponse) => {
           this._log.info('listNamespaces values %j', values);
           callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
@@ -1972,317 +2711,346 @@ export class RegistrationServiceClient {
     this._log.info('listNamespaces request %j', request);
     return this.innerApiCalls
       .listNamespaces(request, options, wrappedCallback)
-      ?.then(([response, input, output]: [
-        protos.google.cloud.servicedirectory.v1.INamespace[],
-        protos.google.cloud.servicedirectory.v1.IListNamespacesRequest|null,
-        protos.google.cloud.servicedirectory.v1.IListNamespacesResponse
-      ]) => {
-        this._log.info('listNamespaces values %j', response);
-        return [response, input, output];
-      });
+      ?.then(
+        ([response, input, output]: [
+          protos.google.cloud.servicedirectory.v1.INamespace[],
+          protos.google.cloud.servicedirectory.v1.IListNamespacesRequest | null,
+          protos.google.cloud.servicedirectory.v1.IListNamespacesResponse,
+        ]) => {
+          this._log.info('listNamespaces values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
-/**
- * Equivalent to `listNamespaces`, but returns a NodeJS Stream object.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the project and location whose namespaces
- *   you'd like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name` or `labels.<key>` for map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `labels.owner` returns namespaces that have a label with the key
- *       `owner`, this is the same as `labels:owner`
- *   *   `labels.owner=sd` returns namespaces that have key/value
- *       `owner=sd`
- *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
- *       returns namespaces that have name that is alphabetically later than the
- *       string, so "namespace-e" is returned but "namespace-a" is not
- *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
- *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any namespaces, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Stream}
- *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace} on 'data' event.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed. Note that it can affect your quota.
- *   We recommend using `listNamespacesAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Equivalent to `listNamespaces`, but returns a NodeJS Stream object.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the project and location whose namespaces
+   *   you'd like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name` or `labels.<key>` for map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `labels.owner` returns namespaces that have a label with the key
+   *       `owner`, this is the same as `labels:owner`
+   *   *   `labels.owner=sd` returns namespaces that have key/value
+   *       `owner=sd`
+   *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
+   *       returns namespaces that have name that is alphabetically later than the
+   *       string, so "namespace-e" is returned but "namespace-a" is not
+   *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
+   *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any namespaces, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Stream}
+   *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace} on 'data' event.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed. Note that it can affect your quota.
+   *   We recommend using `listNamespacesAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listNamespacesStream(
-      request?: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-      options?: CallOptions):
-    Transform{
+    request?: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+    options?: CallOptions,
+  ): Transform {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listNamespaces'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listNamespaces stream %j', request);
     return this.descriptors.page.listNamespaces.createStream(
       this.innerApiCalls.listNamespaces as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
-/**
- * Equivalent to `listNamespaces`, but returns an iterable object.
- *
- * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the project and location whose namespaces
- *   you'd like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name` or `labels.<key>` for map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `labels.owner` returns namespaces that have a label with the key
- *       `owner`, this is the same as `labels:owner`
- *   *   `labels.owner=sd` returns namespaces that have key/value
- *       `owner=sd`
- *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
- *       returns namespaces that have name that is alphabetically later than the
- *       string, so "namespace-e" is returned but "namespace-a" is not
- *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
- *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any namespaces, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Object}
- *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
- *   When you iterate the returned iterable, each element will be an object representing
- *   {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}. The API will be called under the hood as needed, once per the page,
- *   so you can stop the iteration when you don't need more results.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.list_namespaces.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_ListNamespaces_async
- */
+  /**
+   * Equivalent to `listNamespaces`, but returns an iterable object.
+   *
+   * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the project and location whose namespaces
+   *   you'd like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name` or `labels.<key>` for map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `labels.owner` returns namespaces that have a label with the key
+   *       `owner`, this is the same as `labels:owner`
+   *   *   `labels.owner=sd` returns namespaces that have key/value
+   *       `owner=sd`
+   *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
+   *       returns namespaces that have name that is alphabetically later than the
+   *       string, so "namespace-e" is returned but "namespace-a" is not
+   *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
+   *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any namespaces, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Object}
+   *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+   *   When you iterate the returned iterable, each element will be an object representing
+   *   {@link protos.google.cloud.servicedirectory.v1.Namespace|Namespace}. The API will be called under the hood as needed, once per the page,
+   *   so you can stop the iteration when you don't need more results.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.list_namespaces.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_ListNamespaces_async
+   */
   listNamespacesAsync(
-      request?: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
-      options?: CallOptions):
-    AsyncIterable<protos.google.cloud.servicedirectory.v1.INamespace>{
+    request?: protos.google.cloud.servicedirectory.v1.IListNamespacesRequest,
+    options?: CallOptions,
+  ): AsyncIterable<protos.google.cloud.servicedirectory.v1.INamespace> {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listNamespaces'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listNamespaces iterate %j', request);
     return this.descriptors.page.listNamespaces.asyncIterate(
       this.innerApiCalls['listNamespaces'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable<protos.google.cloud.servicedirectory.v1.INamespace>;
   }
- /**
- * Lists all services belonging to a namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the namespace whose services you'd
- *   like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name` or `annotations.<key>` for map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `annotations.owner` returns services that have a annotation with the
- *       key `owner`, this is the same as `annotations:owner`
- *   *   `annotations.protocol=gRPC` returns services that have key/value
- *       `protocol=gRPC`
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
- *       returns services that have name that is alphabetically later than the
- *       string, so "service-e" is returned but "service-a" is not
- *   *   `annotations.owner!=sd AND annotations.foo=bar` returns services that
- *       have `owner` in annotation key but value is not `sd` AND have
- *       key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any services, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1.Service|Service}.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed and will merge results from all the pages into this array.
- *   Note that it can affect your quota.
- *   We recommend using `listServicesAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Lists all services belonging to a namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the namespace whose services you'd
+   *   like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name` or `annotations.<key>` for map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `annotations.owner` returns services that have a annotation with the
+   *       key `owner`, this is the same as `annotations:owner`
+   *   *   `annotations.protocol=gRPC` returns services that have key/value
+   *       `protocol=gRPC`
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
+   *       returns services that have name that is alphabetically later than the
+   *       string, so "service-e" is returned but "service-a" is not
+   *   *   `annotations.owner!=sd AND annotations.foo=bar` returns services that
+   *       have `owner` in annotation key but value is not `sd` AND have
+   *       key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any services, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1.Service|Service}.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed and will merge results from all the pages into this array.
+   *   Note that it can affect your quota.
+   *   We recommend using `listServicesAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listServices(
-      request?: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IService[],
-        protos.google.cloud.servicedirectory.v1.IListServicesRequest|null,
-        protos.google.cloud.servicedirectory.v1.IListServicesResponse
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IService[],
+      protos.google.cloud.servicedirectory.v1.IListServicesRequest | null,
+      protos.google.cloud.servicedirectory.v1.IListServicesResponse,
+    ]
+  >;
   listServices(
-      request: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-      options: CallOptions,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-          protos.google.cloud.servicedirectory.v1.IListServicesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.IService>): void;
+    request: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+    options: CallOptions,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+      | protos.google.cloud.servicedirectory.v1.IListServicesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1.IService
+    >,
+  ): void;
   listServices(
-      request: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-          protos.google.cloud.servicedirectory.v1.IListServicesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.IService>): void;
+    request: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+      | protos.google.cloud.servicedirectory.v1.IListServicesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1.IService
+    >,
+  ): void;
   listServices(
-      request?: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-      optionsOrCallback?: CallOptions|PaginationCallback<
+    request?: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | PaginationCallback<
           protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-          protos.google.cloud.servicedirectory.v1.IListServicesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.IService>,
-      callback?: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-          protos.google.cloud.servicedirectory.v1.IListServicesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.IService>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IService[],
-        protos.google.cloud.servicedirectory.v1.IListServicesRequest|null,
-        protos.google.cloud.servicedirectory.v1.IListServicesResponse
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IListServicesResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1.IService
+        >,
+    callback?: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+      | protos.google.cloud.servicedirectory.v1.IListServicesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1.IService
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IService[],
+      protos.google.cloud.servicedirectory.v1.IListServicesRequest | null,
+      protos.google.cloud.servicedirectory.v1.IListServicesResponse,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: PaginationCallback<
-      protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-      protos.google.cloud.servicedirectory.v1.IListServicesResponse|null|undefined,
-      protos.google.cloud.servicedirectory.v1.IService>|undefined = callback
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+          | protos.google.cloud.servicedirectory.v1.IListServicesResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1.IService
+        >
+      | undefined = callback
       ? (error, values, nextPageRequest, rawResponse) => {
           this._log.info('listServices values %j', values);
           callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
@@ -2291,324 +3059,353 @@ export class RegistrationServiceClient {
     this._log.info('listServices request %j', request);
     return this.innerApiCalls
       .listServices(request, options, wrappedCallback)
-      ?.then(([response, input, output]: [
-        protos.google.cloud.servicedirectory.v1.IService[],
-        protos.google.cloud.servicedirectory.v1.IListServicesRequest|null,
-        protos.google.cloud.servicedirectory.v1.IListServicesResponse
-      ]) => {
-        this._log.info('listServices values %j', response);
-        return [response, input, output];
-      });
+      ?.then(
+        ([response, input, output]: [
+          protos.google.cloud.servicedirectory.v1.IService[],
+          protos.google.cloud.servicedirectory.v1.IListServicesRequest | null,
+          protos.google.cloud.servicedirectory.v1.IListServicesResponse,
+        ]) => {
+          this._log.info('listServices values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
-/**
- * Equivalent to `listServices`, but returns a NodeJS Stream object.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the namespace whose services you'd
- *   like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name` or `annotations.<key>` for map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `annotations.owner` returns services that have a annotation with the
- *       key `owner`, this is the same as `annotations:owner`
- *   *   `annotations.protocol=gRPC` returns services that have key/value
- *       `protocol=gRPC`
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
- *       returns services that have name that is alphabetically later than the
- *       string, so "service-e" is returned but "service-a" is not
- *   *   `annotations.owner!=sd AND annotations.foo=bar` returns services that
- *       have `owner` in annotation key but value is not `sd` AND have
- *       key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any services, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Stream}
- *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1.Service|Service} on 'data' event.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed. Note that it can affect your quota.
- *   We recommend using `listServicesAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Equivalent to `listServices`, but returns a NodeJS Stream object.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the namespace whose services you'd
+   *   like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name` or `annotations.<key>` for map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `annotations.owner` returns services that have a annotation with the
+   *       key `owner`, this is the same as `annotations:owner`
+   *   *   `annotations.protocol=gRPC` returns services that have key/value
+   *       `protocol=gRPC`
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
+   *       returns services that have name that is alphabetically later than the
+   *       string, so "service-e" is returned but "service-a" is not
+   *   *   `annotations.owner!=sd AND annotations.foo=bar` returns services that
+   *       have `owner` in annotation key but value is not `sd` AND have
+   *       key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any services, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Stream}
+   *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1.Service|Service} on 'data' event.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed. Note that it can affect your quota.
+   *   We recommend using `listServicesAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listServicesStream(
-      request?: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-      options?: CallOptions):
-    Transform{
+    request?: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+    options?: CallOptions,
+  ): Transform {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listServices'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listServices stream %j', request);
     return this.descriptors.page.listServices.createStream(
       this.innerApiCalls.listServices as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
-/**
- * Equivalent to `listServices`, but returns an iterable object.
- *
- * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the namespace whose services you'd
- *   like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name` or `annotations.<key>` for map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `annotations.owner` returns services that have a annotation with the
- *       key `owner`, this is the same as `annotations:owner`
- *   *   `annotations.protocol=gRPC` returns services that have key/value
- *       `protocol=gRPC`
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
- *       returns services that have name that is alphabetically later than the
- *       string, so "service-e" is returned but "service-a" is not
- *   *   `annotations.owner!=sd AND annotations.foo=bar` returns services that
- *       have `owner` in annotation key but value is not `sd` AND have
- *       key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any services, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Object}
- *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
- *   When you iterate the returned iterable, each element will be an object representing
- *   {@link protos.google.cloud.servicedirectory.v1.Service|Service}. The API will be called under the hood as needed, once per the page,
- *   so you can stop the iteration when you don't need more results.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.list_services.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_ListServices_async
- */
+  /**
+   * Equivalent to `listServices`, but returns an iterable object.
+   *
+   * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the namespace whose services you'd
+   *   like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name` or `annotations.<key>` for map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `annotations.owner` returns services that have a annotation with the
+   *       key `owner`, this is the same as `annotations:owner`
+   *   *   `annotations.protocol=gRPC` returns services that have key/value
+   *       `protocol=gRPC`
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
+   *       returns services that have name that is alphabetically later than the
+   *       string, so "service-e" is returned but "service-a" is not
+   *   *   `annotations.owner!=sd AND annotations.foo=bar` returns services that
+   *       have `owner` in annotation key but value is not `sd` AND have
+   *       key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any services, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Object}
+   *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+   *   When you iterate the returned iterable, each element will be an object representing
+   *   {@link protos.google.cloud.servicedirectory.v1.Service|Service}. The API will be called under the hood as needed, once per the page,
+   *   so you can stop the iteration when you don't need more results.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.list_services.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_ListServices_async
+   */
   listServicesAsync(
-      request?: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
-      options?: CallOptions):
-    AsyncIterable<protos.google.cloud.servicedirectory.v1.IService>{
+    request?: protos.google.cloud.servicedirectory.v1.IListServicesRequest,
+    options?: CallOptions,
+  ): AsyncIterable<protos.google.cloud.servicedirectory.v1.IService> {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listServices'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listServices iterate %j', request);
     return this.descriptors.page.listServices.asyncIterate(
       this.innerApiCalls['listServices'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable<protos.google.cloud.servicedirectory.v1.IService>;
   }
- /**
- * Lists all endpoints.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the service whose endpoints you'd like to
- *   list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `address`, `port`, or `annotations.<key>` for
- *        map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `annotations.owner` returns endpoints that have a annotation with the
- *       key `owner`, this is the same as `annotations:owner`
- *   *   `annotations.protocol=gRPC` returns endpoints that have key/value
- *       `protocol=gRPC`
- *   *   `address=192.108.1.105` returns endpoints that have this address
- *   *   `port>8080` returns endpoints that have port number larger than 8080
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
- *       returns endpoints that have name that is alphabetically later than the
- *       string, so "endpoint-e" is returned but "endpoint-a" is not
- *   *   `annotations.owner!=sd AND annotations.foo=bar` returns endpoints that
- *       have `owner` in annotation key but value is not `sd` AND have
- *       key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any endpoints, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows values: `name`, `address`, `port`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed and will merge results from all the pages into this array.
- *   Note that it can affect your quota.
- *   We recommend using `listEndpointsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Lists all endpoints.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the service whose endpoints you'd like to
+   *   list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `address`, `port`, or `annotations.<key>` for
+   *        map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `annotations.owner` returns endpoints that have a annotation with the
+   *       key `owner`, this is the same as `annotations:owner`
+   *   *   `annotations.protocol=gRPC` returns endpoints that have key/value
+   *       `protocol=gRPC`
+   *   *   `address=192.108.1.105` returns endpoints that have this address
+   *   *   `port>8080` returns endpoints that have port number larger than 8080
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
+   *       returns endpoints that have name that is alphabetically later than the
+   *       string, so "endpoint-e" is returned but "endpoint-a" is not
+   *   *   `annotations.owner!=sd AND annotations.foo=bar` returns endpoints that
+   *       have `owner` in annotation key but value is not `sd` AND have
+   *       key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any endpoints, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows values: `name`, `address`, `port`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed and will merge results from all the pages into this array.
+   *   Note that it can affect your quota.
+   *   We recommend using `listEndpointsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listEndpoints(
-      request?: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IEndpoint[],
-        protos.google.cloud.servicedirectory.v1.IListEndpointsRequest|null,
-        protos.google.cloud.servicedirectory.v1.IListEndpointsResponse
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IEndpoint[],
+      protos.google.cloud.servicedirectory.v1.IListEndpointsRequest | null,
+      protos.google.cloud.servicedirectory.v1.IListEndpointsResponse,
+    ]
+  >;
   listEndpoints(
-      request: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-      options: CallOptions,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-          protos.google.cloud.servicedirectory.v1.IListEndpointsResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.IEndpoint>): void;
+    request: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+    options: CallOptions,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+      | protos.google.cloud.servicedirectory.v1.IListEndpointsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1.IEndpoint
+    >,
+  ): void;
   listEndpoints(
-      request: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-          protos.google.cloud.servicedirectory.v1.IListEndpointsResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.IEndpoint>): void;
+    request: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+      | protos.google.cloud.servicedirectory.v1.IListEndpointsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1.IEndpoint
+    >,
+  ): void;
   listEndpoints(
-      request?: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-      optionsOrCallback?: CallOptions|PaginationCallback<
+    request?: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | PaginationCallback<
           protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-          protos.google.cloud.servicedirectory.v1.IListEndpointsResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.IEndpoint>,
-      callback?: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-          protos.google.cloud.servicedirectory.v1.IListEndpointsResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1.IEndpoint>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1.IEndpoint[],
-        protos.google.cloud.servicedirectory.v1.IListEndpointsRequest|null,
-        protos.google.cloud.servicedirectory.v1.IListEndpointsResponse
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1.IListEndpointsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1.IEndpoint
+        >,
+    callback?: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+      | protos.google.cloud.servicedirectory.v1.IListEndpointsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1.IEndpoint
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1.IEndpoint[],
+      protos.google.cloud.servicedirectory.v1.IListEndpointsRequest | null,
+      protos.google.cloud.servicedirectory.v1.IListEndpointsResponse,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: PaginationCallback<
-      protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-      protos.google.cloud.servicedirectory.v1.IListEndpointsResponse|null|undefined,
-      protos.google.cloud.servicedirectory.v1.IEndpoint>|undefined = callback
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+          | protos.google.cloud.servicedirectory.v1.IListEndpointsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1.IEndpoint
+        >
+      | undefined = callback
       ? (error, values, nextPageRequest, rawResponse) => {
           this._log.info('listEndpoints values %j', values);
           callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
@@ -2617,203 +3414,208 @@ export class RegistrationServiceClient {
     this._log.info('listEndpoints request %j', request);
     return this.innerApiCalls
       .listEndpoints(request, options, wrappedCallback)
-      ?.then(([response, input, output]: [
-        protos.google.cloud.servicedirectory.v1.IEndpoint[],
-        protos.google.cloud.servicedirectory.v1.IListEndpointsRequest|null,
-        protos.google.cloud.servicedirectory.v1.IListEndpointsResponse
-      ]) => {
-        this._log.info('listEndpoints values %j', response);
-        return [response, input, output];
-      });
+      ?.then(
+        ([response, input, output]: [
+          protos.google.cloud.servicedirectory.v1.IEndpoint[],
+          protos.google.cloud.servicedirectory.v1.IListEndpointsRequest | null,
+          protos.google.cloud.servicedirectory.v1.IListEndpointsResponse,
+        ]) => {
+          this._log.info('listEndpoints values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
-/**
- * Equivalent to `listEndpoints`, but returns a NodeJS Stream object.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the service whose endpoints you'd like to
- *   list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `address`, `port`, or `annotations.<key>` for
- *        map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `annotations.owner` returns endpoints that have a annotation with the
- *       key `owner`, this is the same as `annotations:owner`
- *   *   `annotations.protocol=gRPC` returns endpoints that have key/value
- *       `protocol=gRPC`
- *   *   `address=192.108.1.105` returns endpoints that have this address
- *   *   `port>8080` returns endpoints that have port number larger than 8080
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
- *       returns endpoints that have name that is alphabetically later than the
- *       string, so "endpoint-e" is returned but "endpoint-a" is not
- *   *   `annotations.owner!=sd AND annotations.foo=bar` returns endpoints that
- *       have `owner` in annotation key but value is not `sd` AND have
- *       key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any endpoints, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows values: `name`, `address`, `port`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Stream}
- *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint} on 'data' event.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed. Note that it can affect your quota.
- *   We recommend using `listEndpointsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Equivalent to `listEndpoints`, but returns a NodeJS Stream object.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the service whose endpoints you'd like to
+   *   list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `address`, `port`, or `annotations.<key>` for
+   *        map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `annotations.owner` returns endpoints that have a annotation with the
+   *       key `owner`, this is the same as `annotations:owner`
+   *   *   `annotations.protocol=gRPC` returns endpoints that have key/value
+   *       `protocol=gRPC`
+   *   *   `address=192.108.1.105` returns endpoints that have this address
+   *   *   `port>8080` returns endpoints that have port number larger than 8080
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
+   *       returns endpoints that have name that is alphabetically later than the
+   *       string, so "endpoint-e" is returned but "endpoint-a" is not
+   *   *   `annotations.owner!=sd AND annotations.foo=bar` returns endpoints that
+   *       have `owner` in annotation key but value is not `sd` AND have
+   *       key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any endpoints, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows values: `name`, `address`, `port`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Stream}
+   *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint} on 'data' event.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed. Note that it can affect your quota.
+   *   We recommend using `listEndpointsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listEndpointsStream(
-      request?: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-      options?: CallOptions):
-    Transform{
+    request?: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+    options?: CallOptions,
+  ): Transform {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listEndpoints'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listEndpoints stream %j', request);
     return this.descriptors.page.listEndpoints.createStream(
       this.innerApiCalls.listEndpoints as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
-/**
- * Equivalent to `listEndpoints`, but returns an iterable object.
- *
- * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the service whose endpoints you'd like to
- *   list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `address`, `port`, or `annotations.<key>` for
- *        map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `annotations.owner` returns endpoints that have a annotation with the
- *       key `owner`, this is the same as `annotations:owner`
- *   *   `annotations.protocol=gRPC` returns endpoints that have key/value
- *       `protocol=gRPC`
- *   *   `address=192.108.1.105` returns endpoints that have this address
- *   *   `port>8080` returns endpoints that have port number larger than 8080
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
- *       returns endpoints that have name that is alphabetically later than the
- *       string, so "endpoint-e" is returned but "endpoint-a" is not
- *   *   `annotations.owner!=sd AND annotations.foo=bar` returns endpoints that
- *       have `owner` in annotation key but value is not `sd` AND have
- *       key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any endpoints, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows values: `name`, `address`, `port`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Object}
- *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
- *   When you iterate the returned iterable, each element will be an object representing
- *   {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}. The API will be called under the hood as needed, once per the page,
- *   so you can stop the iteration when you don't need more results.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/registration_service.list_endpoints.js</caption>
- * region_tag:servicedirectory_v1_generated_RegistrationService_ListEndpoints_async
- */
+  /**
+   * Equivalent to `listEndpoints`, but returns an iterable object.
+   *
+   * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the service whose endpoints you'd like to
+   *   list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `address`, `port`, or `annotations.<key>` for
+   *        map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `annotations.owner` returns endpoints that have a annotation with the
+   *       key `owner`, this is the same as `annotations:owner`
+   *   *   `annotations.protocol=gRPC` returns endpoints that have key/value
+   *       `protocol=gRPC`
+   *   *   `address=192.108.1.105` returns endpoints that have this address
+   *   *   `port>8080` returns endpoints that have port number larger than 8080
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
+   *       returns endpoints that have name that is alphabetically later than the
+   *       string, so "endpoint-e" is returned but "endpoint-a" is not
+   *   *   `annotations.owner!=sd AND annotations.foo=bar` returns endpoints that
+   *       have `owner` in annotation key but value is not `sd` AND have
+   *       key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any endpoints, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows values: `name`, `address`, `port`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Object}
+   *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+   *   When you iterate the returned iterable, each element will be an object representing
+   *   {@link protos.google.cloud.servicedirectory.v1.Endpoint|Endpoint}. The API will be called under the hood as needed, once per the page,
+   *   so you can stop the iteration when you don't need more results.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/registration_service.list_endpoints.js</caption>
+   * region_tag:servicedirectory_v1_generated_RegistrationService_ListEndpoints_async
+   */
   listEndpointsAsync(
-      request?: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
-      options?: CallOptions):
-    AsyncIterable<protos.google.cloud.servicedirectory.v1.IEndpoint>{
+    request?: protos.google.cloud.servicedirectory.v1.IListEndpointsRequest,
+    options?: CallOptions,
+  ): AsyncIterable<protos.google.cloud.servicedirectory.v1.IEndpoint> {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listEndpoints'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listEndpoints iterate %j', request);
     return this.descriptors.page.listEndpoints.asyncIterate(
       this.innerApiCalls['listEndpoints'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable<protos.google.cloud.servicedirectory.v1.IEndpoint>;
   }
-/**
+
+  /**
    * Gets information about a location.
    *
    * @param {Object} request
@@ -2848,12 +3650,11 @@ export class RegistrationServiceClient {
       | null
       | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.getLocation(request, options, callback);
   }
-
-/**
+  /**
    * Lists information about the supported locations for this service. Returns an iterable object.
    *
    * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
@@ -2886,7 +3687,7 @@ export class RegistrationServiceClient {
    */
   listLocationsAsync(
     request: LocationProtos.google.cloud.location.IListLocationsRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): AsyncIterable<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.listLocationsAsync(request, options);
   }
@@ -2905,7 +3706,13 @@ export class RegistrationServiceClient {
    * @param {string} endpoint
    * @returns {string} Resource name string.
    */
-  endpointPath(project:string,location:string,namespace:string,service:string,endpoint:string) {
+  endpointPath(
+    project: string,
+    location: string,
+    namespace: string,
+    service: string,
+    endpoint: string,
+  ) {
     return this.pathTemplates.endpointPathTemplate.render({
       project: project,
       location: location,
@@ -2945,7 +3752,8 @@ export class RegistrationServiceClient {
    * @returns {string} A string representing the namespace.
    */
   matchNamespaceFromEndpointName(endpointName: string) {
-    return this.pathTemplates.endpointPathTemplate.match(endpointName).namespace;
+    return this.pathTemplates.endpointPathTemplate.match(endpointName)
+      .namespace;
   }
 
   /**
@@ -2977,7 +3785,7 @@ export class RegistrationServiceClient {
    * @param {string} location
    * @returns {string} Resource name string.
    */
-  locationPath(project:string,location:string) {
+  locationPath(project: string, location: string) {
     return this.pathTemplates.locationPathTemplate.render({
       project: project,
       location: location,
@@ -3014,7 +3822,7 @@ export class RegistrationServiceClient {
    * @param {string} namespace
    * @returns {string} Resource name string.
    */
-  namespacePath(project:string,location:string,namespace:string) {
+  namespacePath(project: string, location: string, namespace: string) {
     return this.pathTemplates.namespacePathTemplate.render({
       project: project,
       location: location,
@@ -3030,7 +3838,8 @@ export class RegistrationServiceClient {
    * @returns {string} A string representing the project.
    */
   matchProjectFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).project;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .project;
   }
 
   /**
@@ -3041,7 +3850,8 @@ export class RegistrationServiceClient {
    * @returns {string} A string representing the location.
    */
   matchLocationFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).location;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .location;
   }
 
   /**
@@ -3052,7 +3862,8 @@ export class RegistrationServiceClient {
    * @returns {string} A string representing the namespace.
    */
   matchNamespaceFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).namespace;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .namespace;
   }
 
   /**
@@ -3064,7 +3875,12 @@ export class RegistrationServiceClient {
    * @param {string} service
    * @returns {string} Resource name string.
    */
-  servicePath(project:string,location:string,namespace:string,service:string) {
+  servicePath(
+    project: string,
+    location: string,
+    namespace: string,
+    service: string,
+  ) {
     return this.pathTemplates.servicePathTemplate.render({
       project: project,
       location: location,
@@ -3125,13 +3941,15 @@ export class RegistrationServiceClient {
    */
   close(): Promise<void> {
     if (this.registrationServiceStub && !this._terminated) {
-      return this.registrationServiceStub.then(stub => {
+      return this.registrationServiceStub.then((stub) => {
         this._log.info('ending gRPC channel');
         this._terminated = true;
         stub.close();
-        this.locationsClient.close().catch(err => {throw err});
+        this.locationsClient.close().catch((err) => {
+          throw err;
+        });
       });
     }
     return Promise.resolve();
   }
-}
\ No newline at end of file
+}
diff --git a/packages/google-cloud-servicedirectory/src/v1beta1/index.ts b/packages/google-cloud-servicedirectory/src/v1beta1/index.ts
index e07a321f9339..0f60415e91f2 100644
--- a/packages/google-cloud-servicedirectory/src/v1beta1/index.ts
+++ b/packages/google-cloud-servicedirectory/src/v1beta1/index.ts
@@ -16,5 +16,5 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-export {LookupServiceClient} from './lookup_service_client';
-export {RegistrationServiceClient} from './registration_service_client';
+export { LookupServiceClient } from './lookup_service_client';
+export { RegistrationServiceClient } from './registration_service_client';
diff --git a/packages/google-cloud-servicedirectory/src/v1beta1/lookup_service_client.ts b/packages/google-cloud-servicedirectory/src/v1beta1/lookup_service_client.ts
index f30013f859e0..68e7a5d7c4a1 100644
--- a/packages/google-cloud-servicedirectory/src/v1beta1/lookup_service_client.ts
+++ b/packages/google-cloud-servicedirectory/src/v1beta1/lookup_service_client.ts
@@ -18,11 +18,18 @@
 
 /* global window */
 import type * as gax from 'google-gax';
-import type {Callback, CallOptions, Descriptors, ClientOptions, LocationsClient, LocationProtos} from 'google-gax';
+import type {
+  Callback,
+  CallOptions,
+  Descriptors,
+  ClientOptions,
+  LocationsClient,
+  LocationProtos,
+} from 'google-gax';
 
 import * as protos from '../../protos/protos';
 import jsonProtos = require('../../protos/protos.json');
-import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax';
+import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax';
 
 /**
  * Client JSON configuration object, loaded from
@@ -44,7 +51,7 @@ export class LookupServiceClient {
   private _gaxModule: typeof gax | typeof gax.fallback;
   private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
   private _protos: {};
-  private _defaults: {[method: string]: gax.CallSettings};
+  private _defaults: { [method: string]: gax.CallSettings };
   private _universeDomain: string;
   private _servicePath: string;
   private _log = logging.log('service-directory');
@@ -57,10 +64,10 @@ export class LookupServiceClient {
     batching: {},
   };
   warn: (code: string, message: string, warnType?: string) => void;
-  innerApiCalls: {[name: string]: Function};
+  innerApiCalls: { [name: string]: Function };
   locationsClient: LocationsClient;
-  pathTemplates: {[name: string]: gax.PathTemplate};
-  lookupServiceStub?: Promise<{[name: string]: Function}>;
+  pathTemplates: { [name: string]: gax.PathTemplate };
+  lookupServiceStub?: Promise<{ [name: string]: Function }>;
 
   /**
    * Construct an instance of LookupServiceClient.
@@ -101,21 +108,42 @@ export class LookupServiceClient {
    *     const client = new LookupServiceClient({fallback: true}, gax);
    *     ```
    */
-  constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) {
+  constructor(
+    opts?: ClientOptions,
+    gaxInstance?: typeof gax | typeof gax.fallback,
+  ) {
     // Ensure that options include all the required fields.
     const staticMembers = this.constructor as typeof LookupServiceClient;
-    if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) {
-      throw new Error('Please set either universe_domain or universeDomain, but not both.');
+    if (
+      opts?.universe_domain &&
+      opts?.universeDomain &&
+      opts?.universe_domain !== opts?.universeDomain
+    ) {
+      throw new Error(
+        'Please set either universe_domain or universeDomain, but not both.',
+      );
     }
-    const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined;
-    this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com';
+    const universeDomainEnvVar =
+      typeof process === 'object' && typeof process.env === 'object'
+        ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']
+        : undefined;
+    this._universeDomain =
+      opts?.universeDomain ??
+      opts?.universe_domain ??
+      universeDomainEnvVar ??
+      'googleapis.com';
     this._servicePath = 'servicedirectory.' + this._universeDomain;
-    const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath;
-    this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint);
+    const servicePath =
+      opts?.servicePath || opts?.apiEndpoint || this._servicePath;
+    this._providedCustomServicePath = !!(
+      opts?.servicePath || opts?.apiEndpoint
+    );
     const port = opts?.port || staticMembers.port;
     const clientConfig = opts?.clientConfig ?? {};
-    const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function');
-    opts = Object.assign({servicePath, port, clientConfig, fallback}, opts);
+    const fallback =
+      opts?.fallback ??
+      (typeof window !== 'undefined' && typeof window?.fetch === 'function');
+    opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts);
 
     // Request numeric enum values if REST transport is used.
     opts.numericEnums = true;
@@ -140,7 +168,7 @@ export class LookupServiceClient {
     this._opts = opts;
 
     // Save the auth object to the client, for use by other methods.
-    this.auth = (this._gaxGrpc.auth as gax.GoogleAuth);
+    this.auth = this._gaxGrpc.auth as gax.GoogleAuth;
 
     // Set useJWTAccessWithScope on the auth object.
     this.auth.useJWTAccessWithScope = true;
@@ -154,15 +182,11 @@ export class LookupServiceClient {
     }
     this.locationsClient = new this._gaxModule.LocationsClient(
       this._gaxGrpc,
-      opts
+      opts,
     );
-  
 
     // Determine the client header string.
-    const clientHeader = [
-      `gax/${this._gaxModule.version}`,
-      `gapic/${version}`,
-    ];
+    const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
     if (typeof process === 'object' && 'versions' in process) {
       clientHeader.push(`gl-node/${process.versions.node}`);
     } else {
@@ -184,20 +208,23 @@ export class LookupServiceClient {
     // Create useful helper objects for these.
     this.pathTemplates = {
       endpointPathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}/endpoints/{endpoint}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}/endpoints/{endpoint}',
       ),
       namespacePathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}',
       ),
       servicePathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}',
       ),
     };
 
     // Put together the default options sent with requests.
     this._defaults = this._gaxGrpc.constructSettings(
-        'google.cloud.servicedirectory.v1beta1.LookupService', gapicConfig as gax.ClientConfig,
-        opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')});
+      'google.cloud.servicedirectory.v1beta1.LookupService',
+      gapicConfig as gax.ClientConfig,
+      opts.clientConfig || {},
+      { 'x-goog-api-client': clientHeader.join(' ') },
+    );
 
     // Set up a dictionary of "inner API calls"; the core implementation
     // of calling the API is handled in `google-gax`, with this code
@@ -228,36 +255,41 @@ export class LookupServiceClient {
     // Put together the "service stub" for
     // google.cloud.servicedirectory.v1beta1.LookupService.
     this.lookupServiceStub = this._gaxGrpc.createStub(
-        this._opts.fallback ?
-          (this._protos as protobuf.Root).lookupService('google.cloud.servicedirectory.v1beta1.LookupService') :
-          // eslint-disable-next-line @typescript-eslint/no-explicit-any
-          (this._protos as any).google.cloud.servicedirectory.v1beta1.LookupService,
-        this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>;
+      this._opts.fallback
+        ? (this._protos as protobuf.Root).lookupService(
+            'google.cloud.servicedirectory.v1beta1.LookupService',
+          )
+        : // eslint-disable-next-line @typescript-eslint/no-explicit-any
+          (this._protos as any).google.cloud.servicedirectory.v1beta1
+            .LookupService,
+      this._opts,
+      this._providedCustomServicePath,
+    ) as Promise<{ [method: string]: Function }>;
 
     // Iterate over each of the methods that the service provides
     // and create an API call method for each.
-    const lookupServiceStubMethods =
-        ['resolveService'];
+    const lookupServiceStubMethods = ['resolveService'];
     for (const methodName of lookupServiceStubMethods) {
       const callPromise = this.lookupServiceStub.then(
-        stub => (...args: Array<{}>) => {
-          if (this._terminated) {
-            return Promise.reject('The client has already been closed.');
-          }
-          const func = stub[methodName];
-          return func.apply(stub, args);
-        },
-        (err: Error|null|undefined) => () => {
+        (stub) =>
+          (...args: Array<{}>) => {
+            if (this._terminated) {
+              return Promise.reject('The client has already been closed.');
+            }
+            const func = stub[methodName];
+            return func.apply(stub, args);
+          },
+        (err: Error | null | undefined) => () => {
           throw err;
-        });
+        },
+      );
 
-      const descriptor =
-        undefined;
+      const descriptor = undefined;
       const apiCall = this._gaxModule.createApiCall(
         callPromise,
         this._defaults[methodName],
         descriptor,
-        this._opts.fallback
+        this._opts.fallback,
       );
 
       this.innerApiCalls[methodName] = apiCall;
@@ -272,8 +304,14 @@ export class LookupServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get servicePath() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static servicePath is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicedirectory.googleapis.com';
   }
@@ -284,8 +322,14 @@ export class LookupServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get apiEndpoint() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static apiEndpoint is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicedirectory.googleapis.com';
   }
@@ -316,9 +360,7 @@ export class LookupServiceClient {
    * @returns {string[]} List of default scopes.
    */
   static get scopes() {
-    return [
-      'https://www.googleapis.com/auth/cloud-platform'
-    ];
+    return ['https://www.googleapis.com/auth/cloud-platform'];
   }
 
   getProjectId(): Promise<string>;
@@ -327,8 +369,9 @@ export class LookupServiceClient {
    * Return the project ID used by this class.
    * @returns {Promise} A promise that resolves to string containing the project ID.
    */
-  getProjectId(callback?: Callback<string, undefined, undefined>):
-      Promise<string>|void {
+  getProjectId(
+    callback?: Callback<string, undefined, undefined>,
+  ): Promise<string> | void {
     if (callback) {
       this.auth.getProjectId(callback);
       return;
@@ -339,145 +382,194 @@ export class LookupServiceClient {
   // -------------------
   // -- Service calls --
   // -------------------
-/**
- * Returns a {@link protos.google.cloud.servicedirectory.v1beta1.Service|service} and its
- * associated endpoints.
- * Resolving a service is not considered an active developer method.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the service to resolve.
- * @param {number} [request.maxEndpoints]
- *   Optional. The maximum number of endpoints to return. Defaults to 25.
- *   Maximum is 100. If a value less than one is specified, the Default is used.
- *   If a value greater than the Maximum is specified, the Maximum is used.
- * @param {string} [request.endpointFilter]
- *   Optional. The filter applied to the endpoints of the resolved service.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `address`, `port`, or `metadata.<key>` for
- *       map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `metadata.owner` returns endpoints that have a annotation with the key
- *       `owner`, this is the same as `metadata:owner`
- *   *   `metadata.protocol=gRPC` returns endpoints that have key/value
- *       `protocol=gRPC`
- *   *   `address=192.108.1.105` returns endpoints that have this address
- *   *   `port>8080` returns endpoints that have port number larger than 8080
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
- *       returns endpoints that have name that is alphabetically later than the
- *       string, so "endpoint-e" is returned but "endpoint-a" is not
- *   *
- *   `name=projects/my-project/locations/us-central1/namespaces/my-namespace/services/my-service/endpoints/ep-1`
- *        returns the endpoint that has an endpoint_id equal to `ep-1`
- *   *   `metadata.owner!=sd AND metadata.foo=bar` returns endpoints that have
- *       `owner` in annotation key but value is not `sd` AND have key/value
- *        `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any endpoint, it returns no results
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.ResolveServiceResponse|ResolveServiceResponse}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/lookup_service.resolve_service.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_LookupService_ResolveService_async
- */
+  /**
+   * Returns a {@link protos.google.cloud.servicedirectory.v1beta1.Service|service} and its
+   * associated endpoints.
+   * Resolving a service is not considered an active developer method.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the service to resolve.
+   * @param {number} [request.maxEndpoints]
+   *   Optional. The maximum number of endpoints to return. Defaults to 25.
+   *   Maximum is 100. If a value less than one is specified, the Default is used.
+   *   If a value greater than the Maximum is specified, the Maximum is used.
+   * @param {string} [request.endpointFilter]
+   *   Optional. The filter applied to the endpoints of the resolved service.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `address`, `port`, or `metadata.<key>` for
+   *       map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `metadata.owner` returns endpoints that have a annotation with the key
+   *       `owner`, this is the same as `metadata:owner`
+   *   *   `metadata.protocol=gRPC` returns endpoints that have key/value
+   *       `protocol=gRPC`
+   *   *   `address=192.108.1.105` returns endpoints that have this address
+   *   *   `port>8080` returns endpoints that have port number larger than 8080
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
+   *       returns endpoints that have name that is alphabetically later than the
+   *       string, so "endpoint-e" is returned but "endpoint-a" is not
+   *   *
+   *   `name=projects/my-project/locations/us-central1/namespaces/my-namespace/services/my-service/endpoints/ep-1`
+   *        returns the endpoint that has an endpoint_id equal to `ep-1`
+   *   *   `metadata.owner!=sd AND metadata.foo=bar` returns endpoints that have
+   *       `owner` in annotation key but value is not `sd` AND have key/value
+   *        `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any endpoint, it returns no results
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.ResolveServiceResponse|ResolveServiceResponse}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/lookup_service.resolve_service.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_LookupService_ResolveService_async
+   */
   resolveService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
-        protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   resolveService(
-      request: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
-          protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
+      | protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   resolveService(
-      request: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
-          protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
+      | protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   resolveService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
-          protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
-          protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
-        protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
+      | protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('resolveService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
-        protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
+          | protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('resolveService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.resolveService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
-        protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('resolveService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .resolveService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IResolveServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('resolveService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
 
-/**
+  /**
    * Gets information about a location.
    *
    * @param {Object} request
@@ -512,12 +604,11 @@ export class LookupServiceClient {
       | null
       | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.getLocation(request, options, callback);
   }
-
-/**
+  /**
    * Lists information about the supported locations for this service. Returns an iterable object.
    *
    * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
@@ -550,7 +641,7 @@ export class LookupServiceClient {
    */
   listLocationsAsync(
     request: LocationProtos.google.cloud.location.IListLocationsRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): AsyncIterable<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.listLocationsAsync(request, options);
   }
@@ -569,7 +660,13 @@ export class LookupServiceClient {
    * @param {string} endpoint
    * @returns {string} Resource name string.
    */
-  endpointPath(project:string,location:string,namespace:string,service:string,endpoint:string) {
+  endpointPath(
+    project: string,
+    location: string,
+    namespace: string,
+    service: string,
+    endpoint: string,
+  ) {
     return this.pathTemplates.endpointPathTemplate.render({
       project: project,
       location: location,
@@ -609,7 +706,8 @@ export class LookupServiceClient {
    * @returns {string} A string representing the namespace.
    */
   matchNamespaceFromEndpointName(endpointName: string) {
-    return this.pathTemplates.endpointPathTemplate.match(endpointName).namespace;
+    return this.pathTemplates.endpointPathTemplate.match(endpointName)
+      .namespace;
   }
 
   /**
@@ -642,7 +740,7 @@ export class LookupServiceClient {
    * @param {string} namespace
    * @returns {string} Resource name string.
    */
-  namespacePath(project:string,location:string,namespace:string) {
+  namespacePath(project: string, location: string, namespace: string) {
     return this.pathTemplates.namespacePathTemplate.render({
       project: project,
       location: location,
@@ -658,7 +756,8 @@ export class LookupServiceClient {
    * @returns {string} A string representing the project.
    */
   matchProjectFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).project;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .project;
   }
 
   /**
@@ -669,7 +768,8 @@ export class LookupServiceClient {
    * @returns {string} A string representing the location.
    */
   matchLocationFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).location;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .location;
   }
 
   /**
@@ -680,7 +780,8 @@ export class LookupServiceClient {
    * @returns {string} A string representing the namespace.
    */
   matchNamespaceFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).namespace;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .namespace;
   }
 
   /**
@@ -692,7 +793,12 @@ export class LookupServiceClient {
    * @param {string} service
    * @returns {string} Resource name string.
    */
-  servicePath(project:string,location:string,namespace:string,service:string) {
+  servicePath(
+    project: string,
+    location: string,
+    namespace: string,
+    service: string,
+  ) {
     return this.pathTemplates.servicePathTemplate.render({
       project: project,
       location: location,
@@ -753,13 +859,15 @@ export class LookupServiceClient {
    */
   close(): Promise<void> {
     if (this.lookupServiceStub && !this._terminated) {
-      return this.lookupServiceStub.then(stub => {
+      return this.lookupServiceStub.then((stub) => {
         this._log.info('ending gRPC channel');
         this._terminated = true;
         stub.close();
-        this.locationsClient.close().catch(err => {throw err});
+        this.locationsClient.close().catch((err) => {
+          throw err;
+        });
       });
     }
     return Promise.resolve();
   }
-}
\ No newline at end of file
+}
diff --git a/packages/google-cloud-servicedirectory/src/v1beta1/registration_service_client.ts b/packages/google-cloud-servicedirectory/src/v1beta1/registration_service_client.ts
index 115b54e3c28d..9490f1f9532c 100644
--- a/packages/google-cloud-servicedirectory/src/v1beta1/registration_service_client.ts
+++ b/packages/google-cloud-servicedirectory/src/v1beta1/registration_service_client.ts
@@ -18,11 +18,20 @@
 
 /* global window */
 import type * as gax from 'google-gax';
-import type {Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback, GaxCall, LocationsClient, LocationProtos} from 'google-gax';
-import {Transform} from 'stream';
+import type {
+  Callback,
+  CallOptions,
+  Descriptors,
+  ClientOptions,
+  PaginationCallback,
+  GaxCall,
+  LocationsClient,
+  LocationProtos,
+} from 'google-gax';
+import { Transform } from 'stream';
 import * as protos from '../../protos/protos';
 import jsonProtos = require('../../protos/protos.json');
-import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax';
+import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax';
 
 /**
  * Client JSON configuration object, loaded from
@@ -58,7 +67,7 @@ export class RegistrationServiceClient {
   private _gaxModule: typeof gax | typeof gax.fallback;
   private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
   private _protos: {};
-  private _defaults: {[method: string]: gax.CallSettings};
+  private _defaults: { [method: string]: gax.CallSettings };
   private _universeDomain: string;
   private _servicePath: string;
   private _log = logging.log('service-directory');
@@ -71,10 +80,10 @@ export class RegistrationServiceClient {
     batching: {},
   };
   warn: (code: string, message: string, warnType?: string) => void;
-  innerApiCalls: {[name: string]: Function};
+  innerApiCalls: { [name: string]: Function };
   locationsClient: LocationsClient;
-  pathTemplates: {[name: string]: gax.PathTemplate};
-  registrationServiceStub?: Promise<{[name: string]: Function}>;
+  pathTemplates: { [name: string]: gax.PathTemplate };
+  registrationServiceStub?: Promise<{ [name: string]: Function }>;
 
   /**
    * Construct an instance of RegistrationServiceClient.
@@ -115,21 +124,42 @@ export class RegistrationServiceClient {
    *     const client = new RegistrationServiceClient({fallback: true}, gax);
    *     ```
    */
-  constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) {
+  constructor(
+    opts?: ClientOptions,
+    gaxInstance?: typeof gax | typeof gax.fallback,
+  ) {
     // Ensure that options include all the required fields.
     const staticMembers = this.constructor as typeof RegistrationServiceClient;
-    if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) {
-      throw new Error('Please set either universe_domain or universeDomain, but not both.');
+    if (
+      opts?.universe_domain &&
+      opts?.universeDomain &&
+      opts?.universe_domain !== opts?.universeDomain
+    ) {
+      throw new Error(
+        'Please set either universe_domain or universeDomain, but not both.',
+      );
     }
-    const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined;
-    this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com';
+    const universeDomainEnvVar =
+      typeof process === 'object' && typeof process.env === 'object'
+        ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']
+        : undefined;
+    this._universeDomain =
+      opts?.universeDomain ??
+      opts?.universe_domain ??
+      universeDomainEnvVar ??
+      'googleapis.com';
     this._servicePath = 'servicedirectory.' + this._universeDomain;
-    const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath;
-    this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint);
+    const servicePath =
+      opts?.servicePath || opts?.apiEndpoint || this._servicePath;
+    this._providedCustomServicePath = !!(
+      opts?.servicePath || opts?.apiEndpoint
+    );
     const port = opts?.port || staticMembers.port;
     const clientConfig = opts?.clientConfig ?? {};
-    const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function');
-    opts = Object.assign({servicePath, port, clientConfig, fallback}, opts);
+    const fallback =
+      opts?.fallback ??
+      (typeof window !== 'undefined' && typeof window?.fetch === 'function');
+    opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts);
 
     // Request numeric enum values if REST transport is used.
     opts.numericEnums = true;
@@ -154,7 +184,7 @@ export class RegistrationServiceClient {
     this._opts = opts;
 
     // Save the auth object to the client, for use by other methods.
-    this.auth = (this._gaxGrpc.auth as gax.GoogleAuth);
+    this.auth = this._gaxGrpc.auth as gax.GoogleAuth;
 
     // Set useJWTAccessWithScope on the auth object.
     this.auth.useJWTAccessWithScope = true;
@@ -168,15 +198,11 @@ export class RegistrationServiceClient {
     }
     this.locationsClient = new this._gaxModule.LocationsClient(
       this._gaxGrpc,
-      opts
+      opts,
     );
-  
 
     // Determine the client header string.
-    const clientHeader = [
-      `gax/${this._gaxModule.version}`,
-      `gapic/${version}`,
-    ];
+    const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
     if (typeof process === 'object' && 'versions' in process) {
       clientHeader.push(`gl-node/${process.versions.node}`);
     } else {
@@ -198,16 +224,16 @@ export class RegistrationServiceClient {
     // Create useful helper objects for these.
     this.pathTemplates = {
       endpointPathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}/endpoints/{endpoint}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}/endpoints/{endpoint}',
       ),
       locationPathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}'
+        'projects/{project}/locations/{location}',
       ),
       namespacePathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}',
       ),
       servicePathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}'
+        'projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}',
       ),
     };
 
@@ -215,18 +241,30 @@ export class RegistrationServiceClient {
     // (e.g. 50 results at a time, with tokens to get subsequent
     // pages). Denote the keys used for pagination and results.
     this.descriptors.page = {
-      listNamespaces:
-          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'namespaces'),
-      listServices:
-          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'services'),
-      listEndpoints:
-          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'endpoints')
+      listNamespaces: new this._gaxModule.PageDescriptor(
+        'pageToken',
+        'nextPageToken',
+        'namespaces',
+      ),
+      listServices: new this._gaxModule.PageDescriptor(
+        'pageToken',
+        'nextPageToken',
+        'services',
+      ),
+      listEndpoints: new this._gaxModule.PageDescriptor(
+        'pageToken',
+        'nextPageToken',
+        'endpoints',
+      ),
     };
 
     // Put together the default options sent with requests.
     this._defaults = this._gaxGrpc.constructSettings(
-        'google.cloud.servicedirectory.v1beta1.RegistrationService', gapicConfig as gax.ClientConfig,
-        opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')});
+      'google.cloud.servicedirectory.v1beta1.RegistrationService',
+      gapicConfig as gax.ClientConfig,
+      opts.clientConfig || {},
+      { 'x-goog-api-client': clientHeader.join(' ') },
+    );
 
     // Set up a dictionary of "inner API calls"; the core implementation
     // of calling the API is handled in `google-gax`, with this code
@@ -257,37 +295,60 @@ export class RegistrationServiceClient {
     // Put together the "service stub" for
     // google.cloud.servicedirectory.v1beta1.RegistrationService.
     this.registrationServiceStub = this._gaxGrpc.createStub(
-        this._opts.fallback ?
-          (this._protos as protobuf.Root).lookupService('google.cloud.servicedirectory.v1beta1.RegistrationService') :
-          // eslint-disable-next-line @typescript-eslint/no-explicit-any
-          (this._protos as any).google.cloud.servicedirectory.v1beta1.RegistrationService,
-        this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>;
+      this._opts.fallback
+        ? (this._protos as protobuf.Root).lookupService(
+            'google.cloud.servicedirectory.v1beta1.RegistrationService',
+          )
+        : // eslint-disable-next-line @typescript-eslint/no-explicit-any
+          (this._protos as any).google.cloud.servicedirectory.v1beta1
+            .RegistrationService,
+      this._opts,
+      this._providedCustomServicePath,
+    ) as Promise<{ [method: string]: Function }>;
 
     // Iterate over each of the methods that the service provides
     // and create an API call method for each.
-    const registrationServiceStubMethods =
-        ['createNamespace', 'listNamespaces', 'getNamespace', 'updateNamespace', 'deleteNamespace', 'createService', 'listServices', 'getService', 'updateService', 'deleteService', 'createEndpoint', 'listEndpoints', 'getEndpoint', 'updateEndpoint', 'deleteEndpoint', 'getIamPolicy', 'setIamPolicy', 'testIamPermissions'];
+    const registrationServiceStubMethods = [
+      'createNamespace',
+      'listNamespaces',
+      'getNamespace',
+      'updateNamespace',
+      'deleteNamespace',
+      'createService',
+      'listServices',
+      'getService',
+      'updateService',
+      'deleteService',
+      'createEndpoint',
+      'listEndpoints',
+      'getEndpoint',
+      'updateEndpoint',
+      'deleteEndpoint',
+      'getIamPolicy',
+      'setIamPolicy',
+      'testIamPermissions',
+    ];
     for (const methodName of registrationServiceStubMethods) {
       const callPromise = this.registrationServiceStub.then(
-        stub => (...args: Array<{}>) => {
-          if (this._terminated) {
-            return Promise.reject('The client has already been closed.');
-          }
-          const func = stub[methodName];
-          return func.apply(stub, args);
-        },
-        (err: Error|null|undefined) => () => {
+        (stub) =>
+          (...args: Array<{}>) => {
+            if (this._terminated) {
+              return Promise.reject('The client has already been closed.');
+            }
+            const func = stub[methodName];
+            return func.apply(stub, args);
+          },
+        (err: Error | null | undefined) => () => {
           throw err;
-        });
+        },
+      );
 
-      const descriptor =
-        this.descriptors.page[methodName] ||
-        undefined;
+      const descriptor = this.descriptors.page[methodName] || undefined;
       const apiCall = this._gaxModule.createApiCall(
         callPromise,
         this._defaults[methodName],
         descriptor,
-        this._opts.fallback
+        this._opts.fallback,
       );
 
       this.innerApiCalls[methodName] = apiCall;
@@ -302,8 +363,14 @@ export class RegistrationServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get servicePath() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static servicePath is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicedirectory.googleapis.com';
   }
@@ -314,8 +381,14 @@ export class RegistrationServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get apiEndpoint() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static apiEndpoint is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicedirectory.googleapis.com';
   }
@@ -346,9 +419,7 @@ export class RegistrationServiceClient {
    * @returns {string[]} List of default scopes.
    */
   static get scopes() {
-    return [
-      'https://www.googleapis.com/auth/cloud-platform'
-    ];
+    return ['https://www.googleapis.com/auth/cloud-platform'];
   }
 
   getProjectId(): Promise<string>;
@@ -357,8 +428,9 @@ export class RegistrationServiceClient {
    * Return the project ID used by this class.
    * @returns {Promise} A promise that resolves to string containing the project ID.
    */
-  getProjectId(callback?: Callback<string, undefined, undefined>):
-      Promise<string>|void {
+  getProjectId(
+    callback?: Callback<string, undefined, undefined>,
+  ): Promise<string> | void {
     if (callback) {
       this.auth.getProjectId(callback);
       return;
@@ -369,1604 +441,2307 @@ export class RegistrationServiceClient {
   // -------------------
   // -- Service calls --
   // -------------------
-/**
- * Creates a namespace, and returns the new namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the project and location the namespace
- *   will be created in.
- * @param {string} request.namespaceId
- *   Required. The Resource ID must be 1-63 characters long, and comply with
- *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
- *   Specifically, the name must be 1-63 characters long and match the regular
- *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
- *   character must be a lowercase letter, and all following characters must
- *   be a dash, lowercase letter, or digit, except the last character, which
- *   cannot be a dash.
- * @param {google.cloud.servicedirectory.v1beta1.Namespace} request.namespace
- *   Required. A namespace with initial fields set.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.create_namespace.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_CreateNamespace_async
- */
+  /**
+   * Creates a namespace, and returns the new namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the project and location the namespace
+   *   will be created in.
+   * @param {string} request.namespaceId
+   *   Required. The Resource ID must be 1-63 characters long, and comply with
+   *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
+   *   Specifically, the name must be 1-63 characters long and match the regular
+   *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
+   *   character must be a lowercase letter, and all following characters must
+   *   be a dash, lowercase letter, or digit, except the last character, which
+   *   cannot be a dash.
+   * @param {google.cloud.servicedirectory.v1beta1.Namespace} request.namespace
+   *   Required. A namespace with initial fields set.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.create_namespace.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_CreateNamespace_async
+   */
   createNamespace(
-      request?: protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   createNamespace(
-      request: protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      | protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createNamespace(
-      request: protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      | protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createNamespace(
-      request?: protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      | protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('createNamespace request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.INamespace,
+          | protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('createNamespace response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.createNamespace(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('createNamespace response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .createNamespace(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.INamespace,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.ICreateNamespaceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('createNamespace response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Gets a namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the namespace to retrieve.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.get_namespace.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_GetNamespace_async
- */
+  /**
+   * Gets a namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the namespace to retrieve.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.get_namespace.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_GetNamespace_async
+   */
   getNamespace(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   getNamespace(
-      request: protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      | protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getNamespace(
-      request: protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      | protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getNamespace(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      | protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getNamespace request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.INamespace,
+          | protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getNamespace response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getNamespace(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getNamespace response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getNamespace(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.INamespace,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IGetNamespaceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('getNamespace response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Updates a namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {google.cloud.servicedirectory.v1beta1.Namespace} request.namespace
- *   Required. The updated namespace.
- * @param {google.protobuf.FieldMask} request.updateMask
- *   Required. List of fields to be updated in this request.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.update_namespace.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_UpdateNamespace_async
- */
+  /**
+   * Updates a namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {google.cloud.servicedirectory.v1beta1.Namespace} request.namespace
+   *   Required. The updated namespace.
+   * @param {google.protobuf.FieldMask} request.updateMask
+   *   Required. List of fields to be updated in this request.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.update_namespace.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_UpdateNamespace_async
+   */
   updateNamespace(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   updateNamespace(
-      request: protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      | protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateNamespace(
-      request: protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      | protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateNamespace(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.INamespace,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      | protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.INamespace,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'namespace.name': request.namespace!.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        'namespace.name': request.namespace!.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('updateNamespace request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.INamespace,
+          | protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('updateNamespace response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.updateNamespace(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.INamespace,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('updateNamespace response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .updateNamespace(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.INamespace,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IUpdateNamespaceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('updateNamespace response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Deletes a namespace. This also deletes all services and endpoints in
- * the namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the namespace to delete.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.delete_namespace.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_DeleteNamespace_async
- */
+  /**
+   * Deletes a namespace. This also deletes all services and endpoints in
+   * the namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the namespace to delete.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.delete_namespace.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_DeleteNamespace_async
+   */
   deleteNamespace(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   deleteNamespace(
-      request: protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteNamespace(
-      request: protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteNamespace(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('deleteNamespace request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.protobuf.IEmpty,
+          | protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('deleteNamespace response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.deleteNamespace(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('deleteNamespace response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .deleteNamespace(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.protobuf.IEmpty,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IDeleteNamespaceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('deleteNamespace response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Creates a service, and returns the new service.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the namespace this service will belong to.
- * @param {string} request.serviceId
- *   Required. The Resource ID must be 1-63 characters long, and comply with
- *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
- *   Specifically, the name must be 1-63 characters long and match the regular
- *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
- *   character must be a lowercase letter, and all following characters must
- *   be a dash, lowercase letter, or digit, except the last character, which
- *   cannot be a dash.
- * @param {google.cloud.servicedirectory.v1beta1.Service} request.service
- *   Required. A service  with initial fields set.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.create_service.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_CreateService_async
- */
+  /**
+   * Creates a service, and returns the new service.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the namespace this service will belong to.
+   * @param {string} request.serviceId
+   *   Required. The Resource ID must be 1-63 characters long, and comply with
+   *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
+   *   Specifically, the name must be 1-63 characters long and match the regular
+   *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
+   *   character must be a lowercase letter, and all following characters must
+   *   be a dash, lowercase letter, or digit, except the last character, which
+   *   cannot be a dash.
+   * @param {google.cloud.servicedirectory.v1beta1.Service} request.service
+   *   Required. A service  with initial fields set.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.create_service.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_CreateService_async
+   */
   createService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   createService(
-      request: protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      | protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createService(
-      request: protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      | protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      | protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('createService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.IService,
+          | protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('createService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.createService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('createService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .createService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.IService,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.ICreateServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('createService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Gets a service.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the service to get.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.get_service.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_GetService_async
- */
+  /**
+   * Gets a service.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the service to get.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.get_service.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_GetService_async
+   */
   getService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   getService(
-      request: protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      | protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getService(
-      request: protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      | protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      | protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.IService,
+          | protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.IService,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IGetServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('getService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Updates a service.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {google.cloud.servicedirectory.v1beta1.Service} request.service
- *   Required. The updated service.
- * @param {google.protobuf.FieldMask} request.updateMask
- *   Required. List of fields to be updated in this request.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.update_service.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_UpdateService_async
- */
+  /**
+   * Updates a service.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {google.cloud.servicedirectory.v1beta1.Service} request.service
+   *   Required. The updated service.
+   * @param {google.protobuf.FieldMask} request.updateMask
+   *   Required. List of fields to be updated in this request.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.update_service.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_UpdateService_async
+   */
   updateService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   updateService(
-      request: protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      | protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateService(
-      request: protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      | protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.IService,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      | protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IService,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'service.name': request.service!.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        'service.name': request.service!.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('updateService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.IService,
+          | protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('updateService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.updateService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.IService,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('updateService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .updateService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.IService,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IUpdateServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('updateService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Deletes a service. This also deletes all endpoints associated with
- * the service.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the service to delete.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.delete_service.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_DeleteService_async
- */
+  /**
+   * Deletes a service. This also deletes all endpoints associated with
+   * the service.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the service to delete.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.delete_service.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_DeleteService_async
+   */
   deleteService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   deleteService(
-      request: protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteService(
-      request: protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteService(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('deleteService request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.protobuf.IEmpty,
+          | protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('deleteService response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.deleteService(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('deleteService response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .deleteService(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.protobuf.IEmpty,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IDeleteServiceRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('deleteService response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Creates an endpoint, and returns the new endpoint.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the service that this endpoint provides.
- * @param {string} request.endpointId
- *   Required. The Resource ID must be 1-63 characters long, and comply with
- *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
- *   Specifically, the name must be 1-63 characters long and match the regular
- *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
- *   character must be a lowercase letter, and all following characters must
- *   be a dash, lowercase letter, or digit, except the last character, which
- *   cannot be a dash.
- * @param {google.cloud.servicedirectory.v1beta1.Endpoint} request.endpoint
- *   Required. A endpoint with initial fields set.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.create_endpoint.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_CreateEndpoint_async
- */
+  /**
+   * Creates an endpoint, and returns the new endpoint.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the service that this endpoint provides.
+   * @param {string} request.endpointId
+   *   Required. The Resource ID must be 1-63 characters long, and comply with
+   *   <a href="https://www.ietf.org/rfc/rfc1035.txt" target="_blank">RFC1035</a>.
+   *   Specifically, the name must be 1-63 characters long and match the regular
+   *   expression `[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?` which means the first
+   *   character must be a lowercase letter, and all following characters must
+   *   be a dash, lowercase letter, or digit, except the last character, which
+   *   cannot be a dash.
+   * @param {google.cloud.servicedirectory.v1beta1.Endpoint} request.endpoint
+   *   Required. A endpoint with initial fields set.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.create_endpoint.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_CreateEndpoint_async
+   */
   createEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   createEndpoint(
-      request: protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createEndpoint(
-      request: protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   createEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('createEndpoint request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+          | protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('createEndpoint response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.createEndpoint(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('createEndpoint response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .createEndpoint(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.ICreateEndpointRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('createEndpoint response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Gets an endpoint.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the endpoint to get.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.get_endpoint.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_GetEndpoint_async
- */
+  /**
+   * Gets an endpoint.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the endpoint to get.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.get_endpoint.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_GetEndpoint_async
+   */
   getEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   getEndpoint(
-      request: protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getEndpoint(
-      request: protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getEndpoint request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+          | protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getEndpoint response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getEndpoint(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getEndpoint response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getEndpoint(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IGetEndpointRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('getEndpoint response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Updates an endpoint.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {google.cloud.servicedirectory.v1beta1.Endpoint} request.endpoint
- *   Required. The updated endpoint.
- * @param {google.protobuf.FieldMask} request.updateMask
- *   Required. List of fields to be updated in this request.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.update_endpoint.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_UpdateEndpoint_async
- */
+  /**
+   * Updates an endpoint.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {google.cloud.servicedirectory.v1beta1.Endpoint} request.endpoint
+   *   Required. The updated endpoint.
+   * @param {google.protobuf.FieldMask} request.updateMask
+   *   Required. List of fields to be updated in this request.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.update_endpoint.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_UpdateEndpoint_async
+   */
   updateEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   updateEndpoint(
-      request: protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateEndpoint(
-      request: protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest,
-      callback: Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest,
+    callback: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   updateEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-          protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      | protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'endpoint.name': request.endpoint!.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        'endpoint.name': request.endpoint!.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('updateEndpoint request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+          | protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('updateEndpoint response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.updateEndpoint(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
-        protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('updateEndpoint response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .updateEndpoint(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicedirectory.v1beta1.IEndpoint,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IUpdateEndpointRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('updateEndpoint response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Deletes an endpoint.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. The name of the endpoint to delete.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.delete_endpoint.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_DeleteEndpoint_async
- */
+  /**
+   * Deletes an endpoint.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. The name of the endpoint to delete.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.protobuf.Empty|Empty}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.delete_endpoint.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_DeleteEndpoint_async
+   */
   deleteEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   deleteEndpoint(
-      request: protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteEndpoint(
-      request: protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest,
-      callback: Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest,
+    callback: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   deleteEndpoint(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.protobuf.IEmpty,
-          protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.protobuf.IEmpty,
+      | protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.protobuf.IEmpty,
+      (
+        | protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('deleteEndpoint request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.protobuf.IEmpty,
+          | protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('deleteEndpoint response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.deleteEndpoint(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.protobuf.IEmpty,
-        protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('deleteEndpoint response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .deleteEndpoint(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.protobuf.IEmpty,
+          (
+            | protos.google.cloud.servicedirectory.v1beta1.IDeleteEndpointRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('deleteEndpoint response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Gets the IAM Policy for a resource
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.resource
- *   REQUIRED: The resource for which the policy is being requested.
- *   See the operation documentation for the appropriate value for this field.
- * @param {google.iam.v1.GetPolicyOptions} request.options
- *   OPTIONAL: A `GetPolicyOptions` object for specifying options to
- *   `GetIamPolicy`.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.iam.v1.Policy|Policy}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.get_iam_policy.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_GetIamPolicy_async
- */
+  /**
+   * Gets the IAM Policy for a resource
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.resource
+   *   REQUIRED: The resource for which the policy is being requested.
+   *   See the operation documentation for the appropriate value for this field.
+   * @param {google.iam.v1.GetPolicyOptions} request.options
+   *   OPTIONAL: A `GetPolicyOptions` object for specifying options to
+   *   `GetIamPolicy`.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.iam.v1.Policy|Policy}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.get_iam_policy.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_GetIamPolicy_async
+   */
   getIamPolicy(
-      request?: protos.google.iam.v1.IGetIamPolicyRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.IGetIamPolicyRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.iam.v1.IGetIamPolicyRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   getIamPolicy(
-      request: protos.google.iam.v1.IGetIamPolicyRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.IGetIamPolicyRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getIamPolicy(
-      request: protos.google.iam.v1.IGetIamPolicyRequest,
-      callback: Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.IGetIamPolicyRequest,
+    callback: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getIamPolicy(
-      request?: protos.google.iam.v1.IGetIamPolicyRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.iam.v1.IGetIamPolicyRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.IGetIamPolicyRequest|undefined, {}|undefined
-      ]>|void {
+          protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.IGetIamPolicyRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'resource': request.resource ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        resource: request.resource ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getIamPolicy request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.IGetIamPolicyRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.iam.v1.IPolicy,
+          protos.google.iam.v1.IGetIamPolicyRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getIamPolicy response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getIamPolicy(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.IGetIamPolicyRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getIamPolicy response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getIamPolicy(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.iam.v1.IPolicy,
+          protos.google.iam.v1.IGetIamPolicyRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('getIamPolicy response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Sets the IAM Policy for a resource
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.resource
- *   REQUIRED: The resource for which the policy is being specified.
- *   See the operation documentation for the appropriate value for this field.
- * @param {google.iam.v1.Policy} request.policy
- *   REQUIRED: The complete policy to be applied to the `resource`. The size of
- *   the policy is limited to a few 10s of KB. An empty policy is a
- *   valid policy but certain Cloud Platform services (such as Projects)
- *   might reject them.
- * @param {google.protobuf.FieldMask} request.updateMask
- *   OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
- *   the fields in the mask will be modified. If no mask is provided, the
- *   following default mask is used:
- *
- *   `paths: "bindings, etag"`
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.iam.v1.Policy|Policy}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.set_iam_policy.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_SetIamPolicy_async
- */
+  /**
+   * Sets the IAM Policy for a resource
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.resource
+   *   REQUIRED: The resource for which the policy is being specified.
+   *   See the operation documentation for the appropriate value for this field.
+   * @param {google.iam.v1.Policy} request.policy
+   *   REQUIRED: The complete policy to be applied to the `resource`. The size of
+   *   the policy is limited to a few 10s of KB. An empty policy is a
+   *   valid policy but certain Cloud Platform services (such as Projects)
+   *   might reject them.
+   * @param {google.protobuf.FieldMask} request.updateMask
+   *   OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
+   *   the fields in the mask will be modified. If no mask is provided, the
+   *   following default mask is used:
+   *
+   *   `paths: "bindings, etag"`
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.iam.v1.Policy|Policy}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.set_iam_policy.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_SetIamPolicy_async
+   */
   setIamPolicy(
-      request?: protos.google.iam.v1.ISetIamPolicyRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.ISetIamPolicyRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.iam.v1.ISetIamPolicyRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   setIamPolicy(
-      request: protos.google.iam.v1.ISetIamPolicyRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.ISetIamPolicyRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   setIamPolicy(
-      request: protos.google.iam.v1.ISetIamPolicyRequest,
-      callback: Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.ISetIamPolicyRequest,
+    callback: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   setIamPolicy(
-      request?: protos.google.iam.v1.ISetIamPolicyRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.iam.v1.ISetIamPolicyRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.iam.v1.IPolicy,
-          protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.ISetIamPolicyRequest|undefined, {}|undefined
-      ]>|void {
+          protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.iam.v1.IPolicy,
+      protos.google.iam.v1.ISetIamPolicyRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'resource': request.resource ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        resource: request.resource ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('setIamPolicy request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.ISetIamPolicyRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.iam.v1.IPolicy,
+          protos.google.iam.v1.ISetIamPolicyRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('setIamPolicy response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.setIamPolicy(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.iam.v1.IPolicy,
-        protos.google.iam.v1.ISetIamPolicyRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('setIamPolicy response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .setIamPolicy(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.iam.v1.IPolicy,
+          protos.google.iam.v1.ISetIamPolicyRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('setIamPolicy response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Tests IAM permissions for a resource (namespace, service  or
- * service workload only).
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.resource
- *   REQUIRED: The resource for which the policy detail is being requested.
- *   See the operation documentation for the appropriate value for this field.
- * @param {string[]} request.permissions
- *   The set of permissions to check for the `resource`. Permissions with
- *   wildcards (such as '*' or 'storage.*') are not allowed. For more
- *   information see
- *   [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.iam.v1.TestIamPermissionsResponse|TestIamPermissionsResponse}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.test_iam_permissions.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_TestIamPermissions_async
- */
+  /**
+   * Tests IAM permissions for a resource (namespace, service  or
+   * service workload only).
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.resource
+   *   REQUIRED: The resource for which the policy detail is being requested.
+   *   See the operation documentation for the appropriate value for this field.
+   * @param {string[]} request.permissions
+   *   The set of permissions to check for the `resource`. Permissions with
+   *   wildcards (such as '*' or 'storage.*') are not allowed. For more
+   *   information see
+   *   [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.iam.v1.TestIamPermissionsResponse|TestIamPermissionsResponse}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.test_iam_permissions.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_TestIamPermissions_async
+   */
   testIamPermissions(
-      request?: protos.google.iam.v1.ITestIamPermissionsRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.iam.v1.ITestIamPermissionsResponse,
-        protos.google.iam.v1.ITestIamPermissionsRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.iam.v1.ITestIamPermissionsRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   testIamPermissions(
-      request: protos.google.iam.v1.ITestIamPermissionsRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.iam.v1.ITestIamPermissionsResponse,
-          protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.ITestIamPermissionsRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   testIamPermissions(
-      request: protos.google.iam.v1.ITestIamPermissionsRequest,
-      callback: Callback<
-          protos.google.iam.v1.ITestIamPermissionsResponse,
-          protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.iam.v1.ITestIamPermissionsRequest,
+    callback: Callback<
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   testIamPermissions(
-      request?: protos.google.iam.v1.ITestIamPermissionsRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.iam.v1.ITestIamPermissionsResponse,
-          protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.iam.v1.ITestIamPermissionsRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.iam.v1.ITestIamPermissionsResponse,
-          protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.iam.v1.ITestIamPermissionsResponse,
-        protos.google.iam.v1.ITestIamPermissionsRequest|undefined, {}|undefined
-      ]>|void {
+          protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.iam.v1.ITestIamPermissionsResponse,
+      protos.google.iam.v1.ITestIamPermissionsRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'resource': request.resource ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        resource: request.resource ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('testIamPermissions request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.iam.v1.ITestIamPermissionsResponse,
-        protos.google.iam.v1.ITestIamPermissionsRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.iam.v1.ITestIamPermissionsResponse,
+          protos.google.iam.v1.ITestIamPermissionsRequest | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('testIamPermissions response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.testIamPermissions(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.iam.v1.ITestIamPermissionsResponse,
-        protos.google.iam.v1.ITestIamPermissionsRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('testIamPermissions response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .testIamPermissions(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.iam.v1.ITestIamPermissionsResponse,
+          protos.google.iam.v1.ITestIamPermissionsRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('testIamPermissions response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
 
- /**
- * Lists all namespaces.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the project and location whose namespaces
- *   you'd like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return. The default value is 100.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `labels.<key>` for map field, or
- *   `attributes.<field>` for attributes field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `labels.owner` returns namespaces that have a label with the key
- *       `owner`, this is the same as `labels:owner`
- *   *   `labels.owner=sd` returns namespaces that have key/value `owner=sd`
- *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
- *       returns namespaces that have name that is alphabetically later than the
- *       string, so "namespace-e" is returned but "namespace-a" is not
- *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
- *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any namespaces, it returns no results
- *   *   `attributes.managed_registration=true` returns namespaces that are
- *       managed by a GCP product or service
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed and will merge results from all the pages into this array.
- *   Note that it can affect your quota.
- *   We recommend using `listNamespacesAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Lists all namespaces.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the project and location whose namespaces
+   *   you'd like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return. The default value is 100.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `labels.<key>` for map field, or
+   *   `attributes.<field>` for attributes field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `labels.owner` returns namespaces that have a label with the key
+   *       `owner`, this is the same as `labels:owner`
+   *   *   `labels.owner=sd` returns namespaces that have key/value `owner=sd`
+   *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
+   *       returns namespaces that have name that is alphabetically later than the
+   *       string, so "namespace-e" is returned but "namespace-a" is not
+   *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
+   *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any namespaces, it returns no results
+   *   *   `attributes.managed_registration=true` returns namespaces that are
+   *       managed by a GCP product or service
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed and will merge results from all the pages into this array.
+   *   Note that it can affect your quota.
+   *   We recommend using `listNamespacesAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listNamespaces(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.INamespace[],
-        protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest|null,
-        protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.INamespace[],
+      protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest | null,
+      protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse,
+    ]
+  >;
   listNamespaces(
-      request: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-      options: CallOptions,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.INamespace>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+    options: CallOptions,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+      | protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1beta1.INamespace
+    >,
+  ): void;
   listNamespaces(
-      request: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.INamespace>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+      | protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1beta1.INamespace
+    >,
+  ): void;
   listNamespaces(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-      optionsOrCallback?: CallOptions|PaginationCallback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | PaginationCallback<
           protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.INamespace>,
-      callback?: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.INamespace>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.INamespace[],
-        protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest|null,
-        protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1beta1.INamespace
+        >,
+    callback?: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+      | protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1beta1.INamespace
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.INamespace[],
+      protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest | null,
+      protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: PaginationCallback<
-      protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-      protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse|null|undefined,
-      protos.google.cloud.servicedirectory.v1beta1.INamespace>|undefined = callback
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+          | protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1beta1.INamespace
+        >
+      | undefined = callback
       ? (error, values, nextPageRequest, rawResponse) => {
           this._log.info('listNamespaces values %j', values);
           callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
@@ -1975,324 +2750,353 @@ export class RegistrationServiceClient {
     this._log.info('listNamespaces request %j', request);
     return this.innerApiCalls
       .listNamespaces(request, options, wrappedCallback)
-      ?.then(([response, input, output]: [
-        protos.google.cloud.servicedirectory.v1beta1.INamespace[],
-        protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest|null,
-        protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse
-      ]) => {
-        this._log.info('listNamespaces values %j', response);
-        return [response, input, output];
-      });
+      ?.then(
+        ([response, input, output]: [
+          protos.google.cloud.servicedirectory.v1beta1.INamespace[],
+          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest | null,
+          protos.google.cloud.servicedirectory.v1beta1.IListNamespacesResponse,
+        ]) => {
+          this._log.info('listNamespaces values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
-/**
- * Equivalent to `listNamespaces`, but returns a NodeJS Stream object.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the project and location whose namespaces
- *   you'd like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return. The default value is 100.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `labels.<key>` for map field, or
- *   `attributes.<field>` for attributes field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `labels.owner` returns namespaces that have a label with the key
- *       `owner`, this is the same as `labels:owner`
- *   *   `labels.owner=sd` returns namespaces that have key/value `owner=sd`
- *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
- *       returns namespaces that have name that is alphabetically later than the
- *       string, so "namespace-e" is returned but "namespace-a" is not
- *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
- *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any namespaces, it returns no results
- *   *   `attributes.managed_registration=true` returns namespaces that are
- *       managed by a GCP product or service
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Stream}
- *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace} on 'data' event.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed. Note that it can affect your quota.
- *   We recommend using `listNamespacesAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Equivalent to `listNamespaces`, but returns a NodeJS Stream object.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the project and location whose namespaces
+   *   you'd like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return. The default value is 100.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `labels.<key>` for map field, or
+   *   `attributes.<field>` for attributes field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `labels.owner` returns namespaces that have a label with the key
+   *       `owner`, this is the same as `labels:owner`
+   *   *   `labels.owner=sd` returns namespaces that have key/value `owner=sd`
+   *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
+   *       returns namespaces that have name that is alphabetically later than the
+   *       string, so "namespace-e" is returned but "namespace-a" is not
+   *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
+   *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any namespaces, it returns no results
+   *   *   `attributes.managed_registration=true` returns namespaces that are
+   *       managed by a GCP product or service
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Stream}
+   *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace} on 'data' event.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed. Note that it can affect your quota.
+   *   We recommend using `listNamespacesAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listNamespacesStream(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-      options?: CallOptions):
-    Transform{
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+    options?: CallOptions,
+  ): Transform {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listNamespaces'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listNamespaces stream %j', request);
     return this.descriptors.page.listNamespaces.createStream(
       this.innerApiCalls.listNamespaces as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
-/**
- * Equivalent to `listNamespaces`, but returns an iterable object.
- *
- * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the project and location whose namespaces
- *   you'd like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return. The default value is 100.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `labels.<key>` for map field, or
- *   `attributes.<field>` for attributes field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `labels.owner` returns namespaces that have a label with the key
- *       `owner`, this is the same as `labels:owner`
- *   *   `labels.owner=sd` returns namespaces that have key/value `owner=sd`
- *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
- *       returns namespaces that have name that is alphabetically later than the
- *       string, so "namespace-e" is returned but "namespace-a" is not
- *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
- *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any namespaces, it returns no results
- *   *   `attributes.managed_registration=true` returns namespaces that are
- *       managed by a GCP product or service
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Object}
- *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
- *   When you iterate the returned iterable, each element will be an object representing
- *   {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}. The API will be called under the hood as needed, once per the page,
- *   so you can stop the iteration when you don't need more results.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.list_namespaces.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_ListNamespaces_async
- */
+  /**
+   * Equivalent to `listNamespaces`, but returns an iterable object.
+   *
+   * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the project and location whose namespaces
+   *   you'd like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return. The default value is 100.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `labels.<key>` for map field, or
+   *   `attributes.<field>` for attributes field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `labels.owner` returns namespaces that have a label with the key
+   *       `owner`, this is the same as `labels:owner`
+   *   *   `labels.owner=sd` returns namespaces that have key/value `owner=sd`
+   *   *   `name>projects/my-project/locations/us-east1/namespaces/namespace-c`
+   *       returns namespaces that have name that is alphabetically later than the
+   *       string, so "namespace-e" is returned but "namespace-a" is not
+   *   *   `labels.owner!=sd AND labels.foo=bar` returns namespaces that have
+   *       `owner` in label key but value is not `sd` AND have key/value `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that namespace
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any namespaces, it returns no results
+   *   *   `attributes.managed_registration=true` returns namespaces that are
+   *       managed by a GCP product or service
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Object}
+   *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+   *   When you iterate the returned iterable, each element will be an object representing
+   *   {@link protos.google.cloud.servicedirectory.v1beta1.Namespace|Namespace}. The API will be called under the hood as needed, once per the page,
+   *   so you can stop the iteration when you don't need more results.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.list_namespaces.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_ListNamespaces_async
+   */
   listNamespacesAsync(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
-      options?: CallOptions):
-    AsyncIterable<protos.google.cloud.servicedirectory.v1beta1.INamespace>{
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListNamespacesRequest,
+    options?: CallOptions,
+  ): AsyncIterable<protos.google.cloud.servicedirectory.v1beta1.INamespace> {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listNamespaces'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listNamespaces iterate %j', request);
     return this.descriptors.page.listNamespaces.asyncIterate(
       this.innerApiCalls['listNamespaces'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable<protos.google.cloud.servicedirectory.v1beta1.INamespace>;
   }
- /**
- * Lists all services belonging to a namespace.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the namespace whose services you'd
- *   like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return. The default value is 100.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name` or `metadata.<key>` for map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `metadata.owner` returns services that have a metadata with the key
- *       `owner`, this is the same as `metadata:owner`
- *   *   `metadata.protocol=gRPC` returns services that have key/value
- *       `protocol=gRPC`
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
- *       returns services that have name that is alphabetically later than the
- *       string, so "service-e" is returned but "service-a" is not
- *   *   `metadata.owner!=sd AND metadata.foo=bar` returns services that have
- *       `owner` in metadata key but value is not `sd` AND have key/value
- *       `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any services, it returns no results
- *   *   `attributes.managed_registration=true` returns services that are
- *   managed
- *       by a GCP product or service
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed and will merge results from all the pages into this array.
- *   Note that it can affect your quota.
- *   We recommend using `listServicesAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Lists all services belonging to a namespace.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the namespace whose services you'd
+   *   like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return. The default value is 100.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name` or `metadata.<key>` for map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `metadata.owner` returns services that have a metadata with the key
+   *       `owner`, this is the same as `metadata:owner`
+   *   *   `metadata.protocol=gRPC` returns services that have key/value
+   *       `protocol=gRPC`
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
+   *       returns services that have name that is alphabetically later than the
+   *       string, so "service-e" is returned but "service-a" is not
+   *   *   `metadata.owner!=sd AND metadata.foo=bar` returns services that have
+   *       `owner` in metadata key but value is not `sd` AND have key/value
+   *       `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any services, it returns no results
+   *   *   `attributes.managed_registration=true` returns services that are
+   *   managed
+   *       by a GCP product or service
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed and will merge results from all the pages into this array.
+   *   Note that it can affect your quota.
+   *   We recommend using `listServicesAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listServices(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IService[],
-        protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest|null,
-        protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IService[],
+      protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest | null,
+      protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse,
+    ]
+  >;
   listServices(
-      request: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-      options: CallOptions,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.IService>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+    options: CallOptions,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+      | protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1beta1.IService
+    >,
+  ): void;
   listServices(
-      request: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.IService>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+      | protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1beta1.IService
+    >,
+  ): void;
   listServices(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-      optionsOrCallback?: CallOptions|PaginationCallback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | PaginationCallback<
           protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.IService>,
-      callback?: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.IService>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IService[],
-        protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest|null,
-        protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1beta1.IService
+        >,
+    callback?: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+      | protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1beta1.IService
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IService[],
+      protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest | null,
+      protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: PaginationCallback<
-      protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-      protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse|null|undefined,
-      protos.google.cloud.servicedirectory.v1beta1.IService>|undefined = callback
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+          | protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1beta1.IService
+        >
+      | undefined = callback
       ? (error, values, nextPageRequest, rawResponse) => {
           this._log.info('listServices values %j', values);
           callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
@@ -2301,332 +3105,361 @@ export class RegistrationServiceClient {
     this._log.info('listServices request %j', request);
     return this.innerApiCalls
       .listServices(request, options, wrappedCallback)
-      ?.then(([response, input, output]: [
-        protos.google.cloud.servicedirectory.v1beta1.IService[],
-        protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest|null,
-        protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse
-      ]) => {
-        this._log.info('listServices values %j', response);
-        return [response, input, output];
-      });
+      ?.then(
+        ([response, input, output]: [
+          protos.google.cloud.servicedirectory.v1beta1.IService[],
+          protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest | null,
+          protos.google.cloud.servicedirectory.v1beta1.IListServicesResponse,
+        ]) => {
+          this._log.info('listServices values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
-/**
- * Equivalent to `listServices`, but returns a NodeJS Stream object.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the namespace whose services you'd
- *   like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return. The default value is 100.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name` or `metadata.<key>` for map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `metadata.owner` returns services that have a metadata with the key
- *       `owner`, this is the same as `metadata:owner`
- *   *   `metadata.protocol=gRPC` returns services that have key/value
- *       `protocol=gRPC`
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
- *       returns services that have name that is alphabetically later than the
- *       string, so "service-e" is returned but "service-a" is not
- *   *   `metadata.owner!=sd AND metadata.foo=bar` returns services that have
- *       `owner` in metadata key but value is not `sd` AND have key/value
- *       `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any services, it returns no results
- *   *   `attributes.managed_registration=true` returns services that are
- *   managed
- *       by a GCP product or service
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Stream}
- *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service} on 'data' event.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed. Note that it can affect your quota.
- *   We recommend using `listServicesAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Equivalent to `listServices`, but returns a NodeJS Stream object.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the namespace whose services you'd
+   *   like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return. The default value is 100.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name` or `metadata.<key>` for map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `metadata.owner` returns services that have a metadata with the key
+   *       `owner`, this is the same as `metadata:owner`
+   *   *   `metadata.protocol=gRPC` returns services that have key/value
+   *       `protocol=gRPC`
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
+   *       returns services that have name that is alphabetically later than the
+   *       string, so "service-e" is returned but "service-a" is not
+   *   *   `metadata.owner!=sd AND metadata.foo=bar` returns services that have
+   *       `owner` in metadata key but value is not `sd` AND have key/value
+   *       `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any services, it returns no results
+   *   *   `attributes.managed_registration=true` returns services that are
+   *   managed
+   *       by a GCP product or service
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Stream}
+   *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service} on 'data' event.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed. Note that it can affect your quota.
+   *   We recommend using `listServicesAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listServicesStream(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-      options?: CallOptions):
-    Transform{
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+    options?: CallOptions,
+  ): Transform {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listServices'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listServices stream %j', request);
     return this.descriptors.page.listServices.createStream(
       this.innerApiCalls.listServices as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
-/**
- * Equivalent to `listServices`, but returns an iterable object.
- *
- * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the namespace whose services you'd
- *   like to list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return. The default value is 100.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name` or `metadata.<key>` for map field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `metadata.owner` returns services that have a metadata with the key
- *       `owner`, this is the same as `metadata:owner`
- *   *   `metadata.protocol=gRPC` returns services that have key/value
- *       `protocol=gRPC`
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
- *       returns services that have name that is alphabetically later than the
- *       string, so "service-e" is returned but "service-a" is not
- *   *   `metadata.owner!=sd AND metadata.foo=bar` returns services that have
- *       `owner` in metadata key but value is not `sd` AND have key/value
- *       `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any services, it returns no results
- *   *   `attributes.managed_registration=true` returns services that are
- *   managed
- *       by a GCP product or service
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows value: `name`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Object}
- *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
- *   When you iterate the returned iterable, each element will be an object representing
- *   {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}. The API will be called under the hood as needed, once per the page,
- *   so you can stop the iteration when you don't need more results.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.list_services.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_ListServices_async
- */
+  /**
+   * Equivalent to `listServices`, but returns an iterable object.
+   *
+   * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the namespace whose services you'd
+   *   like to list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return. The default value is 100.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name` or `metadata.<key>` for map field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `metadata.owner` returns services that have a metadata with the key
+   *       `owner`, this is the same as `metadata:owner`
+   *   *   `metadata.protocol=gRPC` returns services that have key/value
+   *       `protocol=gRPC`
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/service-c`
+   *       returns services that have name that is alphabetically later than the
+   *       string, so "service-e" is returned but "service-a" is not
+   *   *   `metadata.owner!=sd AND metadata.foo=bar` returns services that have
+   *       `owner` in metadata key but value is not `sd` AND have key/value
+   *       `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that service
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any services, it returns no results
+   *   *   `attributes.managed_registration=true` returns services that are
+   *   managed
+   *       by a GCP product or service
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows value: `name`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Object}
+   *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+   *   When you iterate the returned iterable, each element will be an object representing
+   *   {@link protos.google.cloud.servicedirectory.v1beta1.Service|Service}. The API will be called under the hood as needed, once per the page,
+   *   so you can stop the iteration when you don't need more results.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.list_services.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_ListServices_async
+   */
   listServicesAsync(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
-      options?: CallOptions):
-    AsyncIterable<protos.google.cloud.servicedirectory.v1beta1.IService>{
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListServicesRequest,
+    options?: CallOptions,
+  ): AsyncIterable<protos.google.cloud.servicedirectory.v1beta1.IService> {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listServices'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listServices iterate %j', request);
     return this.descriptors.page.listServices.asyncIterate(
       this.innerApiCalls['listServices'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable<protos.google.cloud.servicedirectory.v1beta1.IService>;
   }
- /**
- * Lists all endpoints.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the service whose endpoints you'd like to
- *   list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return. The default value is 100.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `address`, `port`, `metadata.<key>` for map
- *       field, or `attributes.<field>` for attributes field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `metadata.owner` returns endpoints that have a metadata with the key
- *       `owner`, this is the same as `metadata:owner`
- *   *   `metadata.protocol=gRPC` returns endpoints that have key/value
- *       `protocol=gRPC`
- *   *   `address=192.108.1.105` returns endpoints that have this address
- *   *   `port>8080` returns endpoints that have port number larger than 8080
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
- *       returns endpoints that have name that is alphabetically later than the
- *       string, so "endpoint-e" is returned but "endpoint-a" is not
- *   *   `metadata.owner!=sd AND metadata.foo=bar` returns endpoints that have
- *       `owner` in metadata key but value is not `sd` AND have key/value
- *        `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any endpoints, it returns no results
- *   *   `attributes.kubernetes_resource_type=KUBERNETES_RESOURCE_TYPE_CLUSTER_
- *       IP` returns endpoints with the corresponding kubernetes_resource_type
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows values: `name`, `address`, `port`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed and will merge results from all the pages into this array.
- *   Note that it can affect your quota.
- *   We recommend using `listEndpointsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Lists all endpoints.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the service whose endpoints you'd like to
+   *   list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return. The default value is 100.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `address`, `port`, `metadata.<key>` for map
+   *       field, or `attributes.<field>` for attributes field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `metadata.owner` returns endpoints that have a metadata with the key
+   *       `owner`, this is the same as `metadata:owner`
+   *   *   `metadata.protocol=gRPC` returns endpoints that have key/value
+   *       `protocol=gRPC`
+   *   *   `address=192.108.1.105` returns endpoints that have this address
+   *   *   `port>8080` returns endpoints that have port number larger than 8080
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
+   *       returns endpoints that have name that is alphabetically later than the
+   *       string, so "endpoint-e" is returned but "endpoint-a" is not
+   *   *   `metadata.owner!=sd AND metadata.foo=bar` returns endpoints that have
+   *       `owner` in metadata key but value is not `sd` AND have key/value
+   *        `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any endpoints, it returns no results
+   *   *   `attributes.kubernetes_resource_type=KUBERNETES_RESOURCE_TYPE_CLUSTER_
+   *       IP` returns endpoints with the corresponding kubernetes_resource_type
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows values: `name`, `address`, `port`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is Array of {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed and will merge results from all the pages into this array.
+   *   Note that it can affect your quota.
+   *   We recommend using `listEndpointsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listEndpoints(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint[],
-        protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest|null,
-        protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse
-      ]>;
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint[],
+      protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest | null,
+      protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse,
+    ]
+  >;
   listEndpoints(
-      request: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-      options: CallOptions,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+    options: CallOptions,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+      | protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint
+    >,
+  ): void;
   listEndpoints(
-      request: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-      callback: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint>): void;
+    request: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+    callback: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+      | protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint
+    >,
+  ): void;
   listEndpoints(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-      optionsOrCallback?: CallOptions|PaginationCallback<
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | PaginationCallback<
           protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint>,
-      callback?: PaginationCallback<
-          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse|null|undefined,
-          protos.google.cloud.servicedirectory.v1beta1.IEndpoint>):
-      Promise<[
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint[],
-        protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest|null,
-        protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse
-      ]>|void {
+          | protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1beta1.IEndpoint
+        >,
+    callback?: PaginationCallback<
+      protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+      | protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicedirectory.v1beta1.IEndpoint[],
+      protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest | null,
+      protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: PaginationCallback<
-      protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-      protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse|null|undefined,
-      protos.google.cloud.servicedirectory.v1beta1.IEndpoint>|undefined = callback
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+          | protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicedirectory.v1beta1.IEndpoint
+        >
+      | undefined = callback
       ? (error, values, nextPageRequest, rawResponse) => {
           this._log.info('listEndpoints values %j', values);
           callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
@@ -2635,207 +3468,212 @@ export class RegistrationServiceClient {
     this._log.info('listEndpoints request %j', request);
     return this.innerApiCalls
       .listEndpoints(request, options, wrappedCallback)
-      ?.then(([response, input, output]: [
-        protos.google.cloud.servicedirectory.v1beta1.IEndpoint[],
-        protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest|null,
-        protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse
-      ]) => {
-        this._log.info('listEndpoints values %j', response);
-        return [response, input, output];
-      });
+      ?.then(
+        ([response, input, output]: [
+          protos.google.cloud.servicedirectory.v1beta1.IEndpoint[],
+          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest | null,
+          protos.google.cloud.servicedirectory.v1beta1.IListEndpointsResponse,
+        ]) => {
+          this._log.info('listEndpoints values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
-/**
- * Equivalent to `listEndpoints`, but returns a NodeJS Stream object.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the service whose endpoints you'd like to
- *   list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return. The default value is 100.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `address`, `port`, `metadata.<key>` for map
- *       field, or `attributes.<field>` for attributes field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `metadata.owner` returns endpoints that have a metadata with the key
- *       `owner`, this is the same as `metadata:owner`
- *   *   `metadata.protocol=gRPC` returns endpoints that have key/value
- *       `protocol=gRPC`
- *   *   `address=192.108.1.105` returns endpoints that have this address
- *   *   `port>8080` returns endpoints that have port number larger than 8080
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
- *       returns endpoints that have name that is alphabetically later than the
- *       string, so "endpoint-e" is returned but "endpoint-a" is not
- *   *   `metadata.owner!=sd AND metadata.foo=bar` returns endpoints that have
- *       `owner` in metadata key but value is not `sd` AND have key/value
- *        `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any endpoints, it returns no results
- *   *   `attributes.kubernetes_resource_type=KUBERNETES_RESOURCE_TYPE_CLUSTER_
- *       IP` returns endpoints with the corresponding kubernetes_resource_type
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows values: `name`, `address`, `port`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Stream}
- *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint} on 'data' event.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed. Note that it can affect your quota.
- *   We recommend using `listEndpointsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Equivalent to `listEndpoints`, but returns a NodeJS Stream object.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the service whose endpoints you'd like to
+   *   list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return. The default value is 100.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `address`, `port`, `metadata.<key>` for map
+   *       field, or `attributes.<field>` for attributes field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `metadata.owner` returns endpoints that have a metadata with the key
+   *       `owner`, this is the same as `metadata:owner`
+   *   *   `metadata.protocol=gRPC` returns endpoints that have key/value
+   *       `protocol=gRPC`
+   *   *   `address=192.108.1.105` returns endpoints that have this address
+   *   *   `port>8080` returns endpoints that have port number larger than 8080
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
+   *       returns endpoints that have name that is alphabetically later than the
+   *       string, so "endpoint-e" is returned but "endpoint-a" is not
+   *   *   `metadata.owner!=sd AND metadata.foo=bar` returns endpoints that have
+   *       `owner` in metadata key but value is not `sd` AND have key/value
+   *        `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any endpoints, it returns no results
+   *   *   `attributes.kubernetes_resource_type=KUBERNETES_RESOURCE_TYPE_CLUSTER_
+   *       IP` returns endpoints with the corresponding kubernetes_resource_type
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows values: `name`, `address`, `port`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Stream}
+   *   An object stream which emits an object representing {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint} on 'data' event.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed. Note that it can affect your quota.
+   *   We recommend using `listEndpointsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listEndpointsStream(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-      options?: CallOptions):
-    Transform{
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+    options?: CallOptions,
+  ): Transform {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listEndpoints'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listEndpoints stream %j', request);
     return this.descriptors.page.listEndpoints.createStream(
       this.innerApiCalls.listEndpoints as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
-/**
- * Equivalent to `listEndpoints`, but returns an iterable object.
- *
- * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. The resource name of the service whose endpoints you'd like to
- *   list.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of items to return. The default value is 100.
- * @param {string} [request.pageToken]
- *   Optional. The next_page_token value returned from a previous List request,
- *   if any.
- * @param {string} [request.filter]
- *   Optional. The filter to list results by.
- *
- *   General `filter` string syntax:
- *   `<field> <operator> <value> (<logical connector>)`
- *
- *   *   `<field>` can be `name`, `address`, `port`, `metadata.<key>` for map
- *       field, or `attributes.<field>` for attributes field
- *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
- *       means `HAS`, and is roughly the same as `=`
- *   *   `<value>` must be the same data type as field
- *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
- *
- *   Examples of valid filters:
- *
- *   *   `metadata.owner` returns endpoints that have a metadata with the key
- *       `owner`, this is the same as `metadata:owner`
- *   *   `metadata.protocol=gRPC` returns endpoints that have key/value
- *       `protocol=gRPC`
- *   *   `address=192.108.1.105` returns endpoints that have this address
- *   *   `port>8080` returns endpoints that have port number larger than 8080
- *   *
- *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
- *       returns endpoints that have name that is alphabetically later than the
- *       string, so "endpoint-e" is returned but "endpoint-a" is not
- *   *   `metadata.owner!=sd AND metadata.foo=bar` returns endpoints that have
- *       `owner` in metadata key but value is not `sd` AND have key/value
- *        `foo=bar`
- *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
- *       doesn't have a field called "doesnotexist". Since the filter does not
- *       match any endpoints, it returns no results
- *   *   `attributes.kubernetes_resource_type=KUBERNETES_RESOURCE_TYPE_CLUSTER_
- *       IP` returns endpoints with the corresponding kubernetes_resource_type
- *
- *   For more information about filtering, see
- *   [API Filtering](https://aip.dev/160).
- * @param {string} [request.orderBy]
- *   Optional. The order to list results by.
- *
- *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
- *
- *   *   `<field>` allows values: `name`, `address`, `port`
- *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
- *       left blank, `asc` is used
- *
- *   Note that an empty `order_by` string results in default order, which is
- *   order by `name` in ascending order.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Object}
- *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
- *   When you iterate the returned iterable, each element will be an object representing
- *   {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}. The API will be called under the hood as needed, once per the page,
- *   so you can stop the iteration when you don't need more results.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1beta1/registration_service.list_endpoints.js</caption>
- * region_tag:servicedirectory_v1beta1_generated_RegistrationService_ListEndpoints_async
- */
+  /**
+   * Equivalent to `listEndpoints`, but returns an iterable object.
+   *
+   * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. The resource name of the service whose endpoints you'd like to
+   *   list.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of items to return. The default value is 100.
+   * @param {string} [request.pageToken]
+   *   Optional. The next_page_token value returned from a previous List request,
+   *   if any.
+   * @param {string} [request.filter]
+   *   Optional. The filter to list results by.
+   *
+   *   General `filter` string syntax:
+   *   `<field> <operator> <value> (<logical connector>)`
+   *
+   *   *   `<field>` can be `name`, `address`, `port`, `metadata.<key>` for map
+   *       field, or `attributes.<field>` for attributes field
+   *   *   `<operator>` can be `<`, `>`, `<=`, `>=`, `!=`, `=`, `:`. Of which `:`
+   *       means `HAS`, and is roughly the same as `=`
+   *   *   `<value>` must be the same data type as field
+   *   *   `<logical connector>` can be `AND`, `OR`, `NOT`
+   *
+   *   Examples of valid filters:
+   *
+   *   *   `metadata.owner` returns endpoints that have a metadata with the key
+   *       `owner`, this is the same as `metadata:owner`
+   *   *   `metadata.protocol=gRPC` returns endpoints that have key/value
+   *       `protocol=gRPC`
+   *   *   `address=192.108.1.105` returns endpoints that have this address
+   *   *   `port>8080` returns endpoints that have port number larger than 8080
+   *   *
+   *   `name>projects/my-project/locations/us-east1/namespaces/my-namespace/services/my-service/endpoints/endpoint-c`
+   *       returns endpoints that have name that is alphabetically later than the
+   *       string, so "endpoint-e" is returned but "endpoint-a" is not
+   *   *   `metadata.owner!=sd AND metadata.foo=bar` returns endpoints that have
+   *       `owner` in metadata key but value is not `sd` AND have key/value
+   *        `foo=bar`
+   *   *   `doesnotexist.foo=bar` returns an empty list. Note that endpoint
+   *       doesn't have a field called "doesnotexist". Since the filter does not
+   *       match any endpoints, it returns no results
+   *   *   `attributes.kubernetes_resource_type=KUBERNETES_RESOURCE_TYPE_CLUSTER_
+   *       IP` returns endpoints with the corresponding kubernetes_resource_type
+   *
+   *   For more information about filtering, see
+   *   [API Filtering](https://aip.dev/160).
+   * @param {string} [request.orderBy]
+   *   Optional. The order to list results by.
+   *
+   *   General `order_by` string syntax: `<field> (<asc|desc>) (,)`
+   *
+   *   *   `<field>` allows values: `name`, `address`, `port`
+   *   *   `<asc|desc>` ascending or descending order by `<field>`. If this is
+   *       left blank, `asc` is used
+   *
+   *   Note that an empty `order_by` string results in default order, which is
+   *   order by `name` in ascending order.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Object}
+   *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+   *   When you iterate the returned iterable, each element will be an object representing
+   *   {@link protos.google.cloud.servicedirectory.v1beta1.Endpoint|Endpoint}. The API will be called under the hood as needed, once per the page,
+   *   so you can stop the iteration when you don't need more results.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1beta1/registration_service.list_endpoints.js</caption>
+   * region_tag:servicedirectory_v1beta1_generated_RegistrationService_ListEndpoints_async
+   */
   listEndpointsAsync(
-      request?: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
-      options?: CallOptions):
-    AsyncIterable<protos.google.cloud.servicedirectory.v1beta1.IEndpoint>{
+    request?: protos.google.cloud.servicedirectory.v1beta1.IListEndpointsRequest,
+    options?: CallOptions,
+  ): AsyncIterable<protos.google.cloud.servicedirectory.v1beta1.IEndpoint> {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listEndpoints'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listEndpoints iterate %j', request);
     return this.descriptors.page.listEndpoints.asyncIterate(
       this.innerApiCalls['listEndpoints'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable<protos.google.cloud.servicedirectory.v1beta1.IEndpoint>;
   }
-/**
+
+  /**
    * Gets information about a location.
    *
    * @param {Object} request
@@ -2870,12 +3708,11 @@ export class RegistrationServiceClient {
       | null
       | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.getLocation(request, options, callback);
   }
-
-/**
+  /**
    * Lists information about the supported locations for this service. Returns an iterable object.
    *
    * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
@@ -2908,7 +3745,7 @@ export class RegistrationServiceClient {
    */
   listLocationsAsync(
     request: LocationProtos.google.cloud.location.IListLocationsRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): AsyncIterable<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.listLocationsAsync(request, options);
   }
@@ -2927,7 +3764,13 @@ export class RegistrationServiceClient {
    * @param {string} endpoint
    * @returns {string} Resource name string.
    */
-  endpointPath(project:string,location:string,namespace:string,service:string,endpoint:string) {
+  endpointPath(
+    project: string,
+    location: string,
+    namespace: string,
+    service: string,
+    endpoint: string,
+  ) {
     return this.pathTemplates.endpointPathTemplate.render({
       project: project,
       location: location,
@@ -2967,7 +3810,8 @@ export class RegistrationServiceClient {
    * @returns {string} A string representing the namespace.
    */
   matchNamespaceFromEndpointName(endpointName: string) {
-    return this.pathTemplates.endpointPathTemplate.match(endpointName).namespace;
+    return this.pathTemplates.endpointPathTemplate.match(endpointName)
+      .namespace;
   }
 
   /**
@@ -2999,7 +3843,7 @@ export class RegistrationServiceClient {
    * @param {string} location
    * @returns {string} Resource name string.
    */
-  locationPath(project:string,location:string) {
+  locationPath(project: string, location: string) {
     return this.pathTemplates.locationPathTemplate.render({
       project: project,
       location: location,
@@ -3036,7 +3880,7 @@ export class RegistrationServiceClient {
    * @param {string} namespace
    * @returns {string} Resource name string.
    */
-  namespacePath(project:string,location:string,namespace:string) {
+  namespacePath(project: string, location: string, namespace: string) {
     return this.pathTemplates.namespacePathTemplate.render({
       project: project,
       location: location,
@@ -3052,7 +3896,8 @@ export class RegistrationServiceClient {
    * @returns {string} A string representing the project.
    */
   matchProjectFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).project;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .project;
   }
 
   /**
@@ -3063,7 +3908,8 @@ export class RegistrationServiceClient {
    * @returns {string} A string representing the location.
    */
   matchLocationFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).location;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .location;
   }
 
   /**
@@ -3074,7 +3920,8 @@ export class RegistrationServiceClient {
    * @returns {string} A string representing the namespace.
    */
   matchNamespaceFromNamespaceName(namespaceName: string) {
-    return this.pathTemplates.namespacePathTemplate.match(namespaceName).namespace;
+    return this.pathTemplates.namespacePathTemplate.match(namespaceName)
+      .namespace;
   }
 
   /**
@@ -3086,7 +3933,12 @@ export class RegistrationServiceClient {
    * @param {string} service
    * @returns {string} Resource name string.
    */
-  servicePath(project:string,location:string,namespace:string,service:string) {
+  servicePath(
+    project: string,
+    location: string,
+    namespace: string,
+    service: string,
+  ) {
     return this.pathTemplates.servicePathTemplate.render({
       project: project,
       location: location,
@@ -3147,13 +3999,15 @@ export class RegistrationServiceClient {
    */
   close(): Promise<void> {
     if (this.registrationServiceStub && !this._terminated) {
-      return this.registrationServiceStub.then(stub => {
+      return this.registrationServiceStub.then((stub) => {
         this._log.info('ending gRPC channel');
         this._terminated = true;
         stub.close();
-        this.locationsClient.close().catch(err => {throw err});
+        this.locationsClient.close().catch((err) => {
+          throw err;
+        });
       });
     }
     return Promise.resolve();
   }
-}
\ No newline at end of file
+}
diff --git a/packages/google-cloud-servicedirectory/system-test/fixtures/sample/src/index.ts b/packages/google-cloud-servicedirectory/system-test/fixtures/sample/src/index.ts
index 6f22f95ace4b..46b28d1725c2 100644
--- a/packages/google-cloud-servicedirectory/system-test/fixtures/sample/src/index.ts
+++ b/packages/google-cloud-servicedirectory/system-test/fixtures/sample/src/index.ts
@@ -16,13 +16,18 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-import {LookupServiceClient, RegistrationServiceClient} from '@google-cloud/service-directory';
+import {
+  LookupServiceClient,
+  RegistrationServiceClient,
+} from '@google-cloud/service-directory';
 
 // check that the client class type name can be used
 function doStuffWithLookupServiceClient(client: LookupServiceClient) {
   client.close();
 }
-function doStuffWithRegistrationServiceClient(client: RegistrationServiceClient) {
+function doStuffWithRegistrationServiceClient(
+  client: RegistrationServiceClient,
+) {
   client.close();
 }
 
diff --git a/packages/google-cloud-servicedirectory/system-test/install.ts b/packages/google-cloud-servicedirectory/system-test/install.ts
index f66069aa3940..ccf167042d2e 100644
--- a/packages/google-cloud-servicedirectory/system-test/install.ts
+++ b/packages/google-cloud-servicedirectory/system-test/install.ts
@@ -16,34 +16,36 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-import {packNTest} from 'pack-n-play';
-import {readFileSync} from 'fs';
-import {describe, it} from 'mocha';
+import { packNTest } from 'pack-n-play';
+import { readFileSync } from 'fs';
+import { describe, it } from 'mocha';
 
 describe('📦 pack-n-play test', () => {
-
-  it('TypeScript code', async function() {
+  it('TypeScript code', async function () {
     this.timeout(300000);
     const options = {
       packageDir: process.cwd(),
       sample: {
         description: 'TypeScript user can use the type definitions',
-        ts: readFileSync('./system-test/fixtures/sample/src/index.ts').toString()
-      }
+        ts: readFileSync(
+          './system-test/fixtures/sample/src/index.ts',
+        ).toString(),
+      },
     };
     await packNTest(options);
   });
 
-  it('JavaScript code', async function() {
+  it('JavaScript code', async function () {
     this.timeout(300000);
     const options = {
       packageDir: process.cwd(),
       sample: {
         description: 'JavaScript user can use the library',
-        cjs: readFileSync('./system-test/fixtures/sample/src/index.js').toString()
-      }
+        cjs: readFileSync(
+          './system-test/fixtures/sample/src/index.js',
+        ).toString(),
+      },
     };
     await packNTest(options);
   });
-
 });
diff --git a/packages/google-cloud-servicedirectory/test/gapic_lookup_service_v1.ts b/packages/google-cloud-servicedirectory/test/gapic_lookup_service_v1.ts
index f20fd5a3a407..1eae82256cea 100644
--- a/packages/google-cloud-servicedirectory/test/gapic_lookup_service_v1.ts
+++ b/packages/google-cloud-servicedirectory/test/gapic_lookup_service_v1.ts
@@ -19,655 +19,824 @@
 import * as protos from '../protos/protos';
 import * as assert from 'assert';
 import * as sinon from 'sinon';
-import {SinonStub} from 'sinon';
-import {describe, it} from 'mocha';
+import { SinonStub } from 'sinon';
+import { describe, it } from 'mocha';
 import * as lookupserviceModule from '../src';
 
-import {protobuf, LocationProtos} from 'google-gax';
+import { protobuf, LocationProtos } from 'google-gax';
 
 // Dynamically loaded proto JSON is needed to get the type information
 // to fill in default values for request objects
-const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll();
+const root = protobuf.Root.fromJSON(
+  require('../protos/protos.json'),
+).resolveAll();
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
 function getTypeDefaultValue(typeName: string, fields: string[]) {
-    let type = root.lookupType(typeName) as protobuf.Type;
-    for (const field of fields.slice(0, -1)) {
-        type = type.fields[field]?.resolvedType as protobuf.Type;
-    }
-    return type.fields[fields[fields.length - 1]]?.defaultValue;
+  let type = root.lookupType(typeName) as protobuf.Type;
+  for (const field of fields.slice(0, -1)) {
+    type = type.fields[field]?.resolvedType as protobuf.Type;
+  }
+  return type.fields[fields[fields.length - 1]]?.defaultValue;
 }
 
 function generateSampleMessage<T extends object>(instance: T) {
-    const filledObject = (instance.constructor as typeof protobuf.Message)
-        .toObject(instance as protobuf.Message<T>, {defaults: true});
-    return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T;
+  const filledObject = (
+    instance.constructor as typeof protobuf.Message
+  ).toObject(instance as protobuf.Message<T>, { defaults: true });
+  return (instance.constructor as typeof protobuf.Message).fromObject(
+    filledObject,
+  ) as T;
 }
 
 function stubSimpleCall<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]);
+  return error
+    ? sinon.stub().rejects(error)
+    : sinon.stub().resolves([response]);
 }
 
-function stubSimpleCallWithCallback<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response);
+function stubSimpleCallWithCallback<ResponseType>(
+  response?: ResponseType,
+  error?: Error,
+) {
+  return error
+    ? sinon.stub().callsArgWith(2, error)
+    : sinon.stub().callsArgWith(2, null, response);
 }
 
-function stubAsyncIterationCall<ResponseType>(responses?: ResponseType[], error?: Error) {
-    let counter = 0;
-    const asyncIterable = {
-        [Symbol.asyncIterator]() {
-            return {
-                async next() {
-                    if (error) {
-                        return Promise.reject(error);
-                    }
-                    if (counter >= responses!.length) {
-                        return Promise.resolve({done: true, value: undefined});
-                    }
-                    return Promise.resolve({done: false, value: responses![counter++]});
-                }
-            };
-        }
-    };
-    return sinon.stub().returns(asyncIterable);
+function stubAsyncIterationCall<ResponseType>(
+  responses?: ResponseType[],
+  error?: Error,
+) {
+  let counter = 0;
+  const asyncIterable = {
+    [Symbol.asyncIterator]() {
+      return {
+        async next() {
+          if (error) {
+            return Promise.reject(error);
+          }
+          if (counter >= responses!.length) {
+            return Promise.resolve({ done: true, value: undefined });
+          }
+          return Promise.resolve({ done: false, value: responses![counter++] });
+        },
+      };
+    },
+  };
+  return sinon.stub().returns(asyncIterable);
 }
 
 describe('v1.LookupServiceClient', () => {
-    describe('Common methods', () => {
-        it('has apiEndpoint', () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient();
-            const apiEndpoint = client.apiEndpoint;
-            assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
-        });
+  describe('Common methods', () => {
+    it('has apiEndpoint', () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient();
+      const apiEndpoint = client.apiEndpoint;
+      assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
+    });
 
-        it('has universeDomain', () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient();
-            const universeDomain = client.universeDomain;
-            assert.strictEqual(universeDomain, "googleapis.com");
-        });
+    it('has universeDomain', () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient();
+      const universeDomain = client.universeDomain;
+      assert.strictEqual(universeDomain, 'googleapis.com');
+    });
 
-        if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-            it('throws DeprecationWarning if static servicePath is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const servicePath = lookupserviceModule.v1.LookupServiceClient.servicePath;
-                assert.strictEqual(servicePath, 'servicedirectory.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-
-            it('throws DeprecationWarning if static apiEndpoint is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const apiEndpoint = lookupserviceModule.v1.LookupServiceClient.apiEndpoint;
-                assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-        }
-        it('sets apiEndpoint according to universe domain camelCase', () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({universeDomain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicedirectory.example.com');
-        });
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      it('throws DeprecationWarning if static servicePath is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const servicePath =
+          lookupserviceModule.v1.LookupServiceClient.servicePath;
+        assert.strictEqual(servicePath, 'servicedirectory.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+
+      it('throws DeprecationWarning if static apiEndpoint is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const apiEndpoint =
+          lookupserviceModule.v1.LookupServiceClient.apiEndpoint;
+        assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+    }
+    it('sets apiEndpoint according to universe domain camelCase', () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        universeDomain: 'example.com',
+      });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicedirectory.example.com');
+    });
 
-        it('sets apiEndpoint according to universe domain snakeCase', () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({universe_domain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicedirectory.example.com');
-        });
+    it('sets apiEndpoint according to universe domain snakeCase', () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        universe_domain: 'example.com',
+      });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicedirectory.example.com');
+    });
 
-        if (typeof process === 'object' && 'env' in process) {
-            describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
-                it('sets apiEndpoint from environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new lookupserviceModule.v1.LookupServiceClient();
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicedirectory.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-
-                it('value configured in code has priority over environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new lookupserviceModule.v1.LookupServiceClient({universeDomain: 'configured.example.com'});
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicedirectory.configured.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-            });
-        }
-        it('does not allow setting both universeDomain and universe_domain', () => {
-            assert.throws(() => { new lookupserviceModule.v1.LookupServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); });
+    if (typeof process === 'object' && 'env' in process) {
+      describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
+        it('sets apiEndpoint from environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client = new lookupserviceModule.v1.LookupServiceClient();
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(servicePath, 'servicedirectory.example.com');
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
         });
 
-        it('has port', () => {
-            const port = lookupserviceModule.v1.LookupServiceClient.port;
-            assert(port);
-            assert(typeof port === 'number');
+        it('value configured in code has priority over environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client = new lookupserviceModule.v1.LookupServiceClient({
+            universeDomain: 'configured.example.com',
+          });
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(
+            servicePath,
+            'servicedirectory.configured.example.com',
+          );
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
         });
-
-        it('should create a client with no option', () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient();
-            assert(client);
+      });
+    }
+    it('does not allow setting both universeDomain and universe_domain', () => {
+      assert.throws(() => {
+        new lookupserviceModule.v1.LookupServiceClient({
+          universe_domain: 'example.com',
+          universeDomain: 'example.net',
         });
+      });
+    });
 
-        it('should create a client with gRPC fallback', () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-                fallback: true,
-            });
-            assert(client);
-        });
+    it('has port', () => {
+      const port = lookupserviceModule.v1.LookupServiceClient.port;
+      assert(port);
+      assert(typeof port === 'number');
+    });
 
-        it('has initialize method and supports deferred initialization', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.lookupServiceStub, undefined);
-            await client.initialize();
-            assert(client.lookupServiceStub);
-        });
+    it('should create a client with no option', () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient();
+      assert(client);
+    });
 
-        it('has close method for the initialized client', done => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.initialize().catch(err => {throw err});
-            assert(client.lookupServiceStub);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
-        });
+    it('should create a client with gRPC fallback', () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        fallback: true,
+      });
+      assert(client);
+    });
 
-        it('has close method for the non-initialized client', done => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.lookupServiceStub, undefined);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
-        });
+    it('has initialize method and supports deferred initialization', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      assert.strictEqual(client.lookupServiceStub, undefined);
+      await client.initialize();
+      assert(client.lookupServiceStub);
+    });
 
-        it('has getProjectId method', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
-            const result = await client.getProjectId();
-            assert.strictEqual(result, fakeProjectId);
-            assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+    it('has close method for the initialized client', (done) => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.initialize().catch((err) => {
+        throw err;
+      });
+      assert(client.lookupServiceStub);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
+    });
 
-        it('has getProjectId method with callback', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId);
-            const promise = new Promise((resolve, reject) => {
-                client.getProjectId((err?: Error|null, projectId?: string|null) => {
-                    if (err) {
-                        reject(err);
-                    } else {
-                        resolve(projectId);
-                    }
-                });
-            });
-            const result = await promise;
-            assert.strictEqual(result, fakeProjectId);
+    it('has close method for the non-initialized client', (done) => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      assert.strictEqual(client.lookupServiceStub, undefined);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
     });
 
-    describe('resolveService', () => {
-        it('invokes resolveService without error', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ResolveServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ResolveServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ResolveServiceResponse()
-            );
-            client.innerApiCalls.resolveService = stubSimpleCall(expectedResponse);
-            const [response] = await client.resolveService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('has getProjectId method', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
+      const result = await client.getProjectId();
+      assert.strictEqual(result, fakeProjectId);
+      assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+    });
 
-        it('invokes resolveService without error using callback', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ResolveServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ResolveServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ResolveServiceResponse()
-            );
-            client.innerApiCalls.resolveService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.resolveService(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.IResolveServiceResponse|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('has getProjectId method with callback', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.auth.getProjectId = sinon
+        .stub()
+        .callsArgWith(0, null, fakeProjectId);
+      const promise = new Promise((resolve, reject) => {
+        client.getProjectId((err?: Error | null, projectId?: string | null) => {
+          if (err) {
+            reject(err);
+          } else {
+            resolve(projectId);
+          }
         });
+      });
+      const result = await promise;
+      assert.strictEqual(result, fakeProjectId);
+    });
+  });
+
+  describe('resolveService', () => {
+    it('invokes resolveService without error', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ResolveServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ResolveServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ResolveServiceResponse(),
+      );
+      client.innerApiCalls.resolveService = stubSimpleCall(expectedResponse);
+      const [response] = await client.resolveService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes resolveService with error', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ResolveServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ResolveServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.resolveService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.resolveService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes resolveService without error using callback', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ResolveServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ResolveServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ResolveServiceResponse(),
+      );
+      client.innerApiCalls.resolveService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.resolveService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.IResolveServiceResponse | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes resolveService with closed client', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ResolveServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ResolveServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.resolveService(request), expectedError);
-        });
+    it('invokes resolveService with error', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ResolveServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ResolveServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.resolveService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.resolveService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
-    describe('getLocation', () => {
-        it('invokes getLocation without error', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
-            const response = await client.getLocation(request, expectedOptions);
-            assert.deepStrictEqual(response, [expectedResponse]);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
-        it('invokes getLocation without error using callback', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = sinon.stub().callsArgWith(2, null, expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getLocation(
-                    request,
-                    expectedOptions,
-                    (
-                        err?: Error | null,
-                        result?: LocationProtos.google.cloud.location.ILocation | null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0));
-        });
-        it('invokes getLocation with error', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedError = new Error('expected');
-            client.locationsClient.getLocation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getLocation(request, expectedOptions), expectedError);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
+
+    it('invokes resolveService with closed client', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ResolveServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ResolveServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.resolveService(request), expectedError);
+    });
+  });
+  describe('getLocation', () => {
+    it('invokes getLocation without error', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
+      const response = await client.getLocation(request, expectedOptions);
+      assert.deepStrictEqual(response, [expectedResponse]);
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
     });
-    describe('listLocationsAsync', () => {
-        it('uses async iteration with listLocations without error', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-                new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedResponse = [
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-            ];
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-            const iterable = client.listLocationsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+    it('invokes getLocation without error using callback', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = sinon
+        .stub()
+        .callsArgWith(2, null, expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getLocation(
+          request,
+          expectedOptions,
+          (
+            err?: Error | null,
+            result?: LocationProtos.google.cloud.location.ILocation | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-        it('uses async iteration with listLocations with error', async () => {
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedError = new Error('expected');
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listLocationsAsync(request);
-            await assert.rejects(async () => {
-                const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      assert((client.locationsClient.getLocation as SinonStub).getCall(0));
+    });
+    it('invokes getLocation with error', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedError = new Error('expected');
+      client.locationsClient.getLocation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.getLocation(request, expectedOptions),
+        expectedError,
+      );
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
+    });
+  });
+  describe('listLocationsAsync', () => {
+    it('uses async iteration with listLocations without error', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedResponse = [
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+      ];
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+      const iterable = client.listLocationsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+    it('uses async iteration with listLocations with error', async () => {
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedError = new Error('expected');
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listLocationsAsync(request);
+      await assert.rejects(async () => {
+        const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+  });
+
+  describe('Path templates', () => {
+    describe('endpoint', async () => {
+      const fakePath = '/rendered/path/endpoint';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+        service: 'serviceValue',
+        endpoint: 'endpointValue',
+      };
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.endpointPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.endpointPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('endpointPath', () => {
+        const result = client.endpointPath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+          'serviceValue',
+          'endpointValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.endpointPathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromEndpointName', () => {
+        const result = client.matchProjectFromEndpointName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromEndpointName', () => {
+        const result = client.matchLocationFromEndpointName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromEndpointName', () => {
+        const result = client.matchNamespaceFromEndpointName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchServiceFromEndpointName', () => {
+        const result = client.matchServiceFromEndpointName(fakePath);
+        assert.strictEqual(result, 'serviceValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchEndpointFromEndpointName', () => {
+        const result = client.matchEndpointFromEndpointName(fakePath);
+        assert.strictEqual(result, 'endpointValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
 
-    describe('Path templates', () => {
-
-        describe('endpoint', async () => {
-            const fakePath = "/rendered/path/endpoint";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-                service: "serviceValue",
-                endpoint: "endpointValue",
-            };
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.endpointPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.endpointPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('endpointPath', () => {
-                const result = client.endpointPath("projectValue", "locationValue", "namespaceValue", "serviceValue", "endpointValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.endpointPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromEndpointName', () => {
-                const result = client.matchProjectFromEndpointName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromEndpointName', () => {
-                const result = client.matchLocationFromEndpointName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchNamespaceFromEndpointName', () => {
-                const result = client.matchNamespaceFromEndpointName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchServiceFromEndpointName', () => {
-                const result = client.matchServiceFromEndpointName(fakePath);
-                assert.strictEqual(result, "serviceValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchEndpointFromEndpointName', () => {
-                const result = client.matchEndpointFromEndpointName(fakePath);
-                assert.strictEqual(result, "endpointValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
-
-        describe('namespace', async () => {
-            const fakePath = "/rendered/path/namespace";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-            };
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.namespacePathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.namespacePathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('namespacePath', () => {
-                const result = client.namespacePath("projectValue", "locationValue", "namespaceValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.namespacePathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromNamespaceName', () => {
-                const result = client.matchProjectFromNamespaceName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromNamespaceName', () => {
-                const result = client.matchLocationFromNamespaceName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchNamespaceFromNamespaceName', () => {
-                const result = client.matchNamespaceFromNamespaceName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    describe('namespace', async () => {
+      const fakePath = '/rendered/path/namespace';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+      };
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.namespacePathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.namespacePathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('namespacePath', () => {
+        const result = client.namespacePath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.namespacePathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromNamespaceName', () => {
+        const result = client.matchProjectFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromNamespaceName', () => {
+        const result = client.matchLocationFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromNamespaceName', () => {
+        const result = client.matchNamespaceFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+    });
 
-        describe('service', async () => {
-            const fakePath = "/rendered/path/service";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-                service: "serviceValue",
-            };
-            const client = new lookupserviceModule.v1.LookupServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.servicePathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.servicePathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('servicePath', () => {
-                const result = client.servicePath("projectValue", "locationValue", "namespaceValue", "serviceValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.servicePathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromServiceName', () => {
-                const result = client.matchProjectFromServiceName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromServiceName', () => {
-                const result = client.matchLocationFromServiceName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchNamespaceFromServiceName', () => {
-                const result = client.matchNamespaceFromServiceName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchServiceFromServiceName', () => {
-                const result = client.matchServiceFromServiceName(fakePath);
-                assert.strictEqual(result, "serviceValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    describe('service', async () => {
+      const fakePath = '/rendered/path/service';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+        service: 'serviceValue',
+      };
+      const client = new lookupserviceModule.v1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.servicePathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.servicePathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('servicePath', () => {
+        const result = client.servicePath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+          'serviceValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.servicePathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromServiceName', () => {
+        const result = client.matchProjectFromServiceName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromServiceName', () => {
+        const result = client.matchLocationFromServiceName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromServiceName', () => {
+        const result = client.matchNamespaceFromServiceName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchServiceFromServiceName', () => {
+        const result = client.matchServiceFromServiceName(fakePath);
+        assert.strictEqual(result, 'serviceValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
+  });
 });
diff --git a/packages/google-cloud-servicedirectory/test/gapic_lookup_service_v1beta1.ts b/packages/google-cloud-servicedirectory/test/gapic_lookup_service_v1beta1.ts
index 65411791b5f2..bbc208ba31c8 100644
--- a/packages/google-cloud-servicedirectory/test/gapic_lookup_service_v1beta1.ts
+++ b/packages/google-cloud-servicedirectory/test/gapic_lookup_service_v1beta1.ts
@@ -19,655 +19,824 @@
 import * as protos from '../protos/protos';
 import * as assert from 'assert';
 import * as sinon from 'sinon';
-import {SinonStub} from 'sinon';
-import {describe, it} from 'mocha';
+import { SinonStub } from 'sinon';
+import { describe, it } from 'mocha';
 import * as lookupserviceModule from '../src';
 
-import {protobuf, LocationProtos} from 'google-gax';
+import { protobuf, LocationProtos } from 'google-gax';
 
 // Dynamically loaded proto JSON is needed to get the type information
 // to fill in default values for request objects
-const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll();
+const root = protobuf.Root.fromJSON(
+  require('../protos/protos.json'),
+).resolveAll();
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
 function getTypeDefaultValue(typeName: string, fields: string[]) {
-    let type = root.lookupType(typeName) as protobuf.Type;
-    for (const field of fields.slice(0, -1)) {
-        type = type.fields[field]?.resolvedType as protobuf.Type;
-    }
-    return type.fields[fields[fields.length - 1]]?.defaultValue;
+  let type = root.lookupType(typeName) as protobuf.Type;
+  for (const field of fields.slice(0, -1)) {
+    type = type.fields[field]?.resolvedType as protobuf.Type;
+  }
+  return type.fields[fields[fields.length - 1]]?.defaultValue;
 }
 
 function generateSampleMessage<T extends object>(instance: T) {
-    const filledObject = (instance.constructor as typeof protobuf.Message)
-        .toObject(instance as protobuf.Message<T>, {defaults: true});
-    return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T;
+  const filledObject = (
+    instance.constructor as typeof protobuf.Message
+  ).toObject(instance as protobuf.Message<T>, { defaults: true });
+  return (instance.constructor as typeof protobuf.Message).fromObject(
+    filledObject,
+  ) as T;
 }
 
 function stubSimpleCall<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]);
+  return error
+    ? sinon.stub().rejects(error)
+    : sinon.stub().resolves([response]);
 }
 
-function stubSimpleCallWithCallback<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response);
+function stubSimpleCallWithCallback<ResponseType>(
+  response?: ResponseType,
+  error?: Error,
+) {
+  return error
+    ? sinon.stub().callsArgWith(2, error)
+    : sinon.stub().callsArgWith(2, null, response);
 }
 
-function stubAsyncIterationCall<ResponseType>(responses?: ResponseType[], error?: Error) {
-    let counter = 0;
-    const asyncIterable = {
-        [Symbol.asyncIterator]() {
-            return {
-                async next() {
-                    if (error) {
-                        return Promise.reject(error);
-                    }
-                    if (counter >= responses!.length) {
-                        return Promise.resolve({done: true, value: undefined});
-                    }
-                    return Promise.resolve({done: false, value: responses![counter++]});
-                }
-            };
-        }
-    };
-    return sinon.stub().returns(asyncIterable);
+function stubAsyncIterationCall<ResponseType>(
+  responses?: ResponseType[],
+  error?: Error,
+) {
+  let counter = 0;
+  const asyncIterable = {
+    [Symbol.asyncIterator]() {
+      return {
+        async next() {
+          if (error) {
+            return Promise.reject(error);
+          }
+          if (counter >= responses!.length) {
+            return Promise.resolve({ done: true, value: undefined });
+          }
+          return Promise.resolve({ done: false, value: responses![counter++] });
+        },
+      };
+    },
+  };
+  return sinon.stub().returns(asyncIterable);
 }
 
 describe('v1beta1.LookupServiceClient', () => {
-    describe('Common methods', () => {
-        it('has apiEndpoint', () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient();
-            const apiEndpoint = client.apiEndpoint;
-            assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
-        });
+  describe('Common methods', () => {
+    it('has apiEndpoint', () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient();
+      const apiEndpoint = client.apiEndpoint;
+      assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
+    });
 
-        it('has universeDomain', () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient();
-            const universeDomain = client.universeDomain;
-            assert.strictEqual(universeDomain, "googleapis.com");
-        });
+    it('has universeDomain', () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient();
+      const universeDomain = client.universeDomain;
+      assert.strictEqual(universeDomain, 'googleapis.com');
+    });
 
-        if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-            it('throws DeprecationWarning if static servicePath is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const servicePath = lookupserviceModule.v1beta1.LookupServiceClient.servicePath;
-                assert.strictEqual(servicePath, 'servicedirectory.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-
-            it('throws DeprecationWarning if static apiEndpoint is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const apiEndpoint = lookupserviceModule.v1beta1.LookupServiceClient.apiEndpoint;
-                assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-        }
-        it('sets apiEndpoint according to universe domain camelCase', () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({universeDomain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicedirectory.example.com');
-        });
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      it('throws DeprecationWarning if static servicePath is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const servicePath =
+          lookupserviceModule.v1beta1.LookupServiceClient.servicePath;
+        assert.strictEqual(servicePath, 'servicedirectory.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+
+      it('throws DeprecationWarning if static apiEndpoint is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const apiEndpoint =
+          lookupserviceModule.v1beta1.LookupServiceClient.apiEndpoint;
+        assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+    }
+    it('sets apiEndpoint according to universe domain camelCase', () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        universeDomain: 'example.com',
+      });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicedirectory.example.com');
+    });
 
-        it('sets apiEndpoint according to universe domain snakeCase', () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({universe_domain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicedirectory.example.com');
-        });
+    it('sets apiEndpoint according to universe domain snakeCase', () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        universe_domain: 'example.com',
+      });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicedirectory.example.com');
+    });
 
-        if (typeof process === 'object' && 'env' in process) {
-            describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
-                it('sets apiEndpoint from environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new lookupserviceModule.v1beta1.LookupServiceClient();
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicedirectory.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-
-                it('value configured in code has priority over environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new lookupserviceModule.v1beta1.LookupServiceClient({universeDomain: 'configured.example.com'});
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicedirectory.configured.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-            });
-        }
-        it('does not allow setting both universeDomain and universe_domain', () => {
-            assert.throws(() => { new lookupserviceModule.v1beta1.LookupServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); });
+    if (typeof process === 'object' && 'env' in process) {
+      describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
+        it('sets apiEndpoint from environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client = new lookupserviceModule.v1beta1.LookupServiceClient();
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(servicePath, 'servicedirectory.example.com');
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
         });
 
-        it('has port', () => {
-            const port = lookupserviceModule.v1beta1.LookupServiceClient.port;
-            assert(port);
-            assert(typeof port === 'number');
+        it('value configured in code has priority over environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+            universeDomain: 'configured.example.com',
+          });
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(
+            servicePath,
+            'servicedirectory.configured.example.com',
+          );
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
         });
-
-        it('should create a client with no option', () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient();
-            assert(client);
+      });
+    }
+    it('does not allow setting both universeDomain and universe_domain', () => {
+      assert.throws(() => {
+        new lookupserviceModule.v1beta1.LookupServiceClient({
+          universe_domain: 'example.com',
+          universeDomain: 'example.net',
         });
+      });
+    });
 
-        it('should create a client with gRPC fallback', () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-                fallback: true,
-            });
-            assert(client);
-        });
+    it('has port', () => {
+      const port = lookupserviceModule.v1beta1.LookupServiceClient.port;
+      assert(port);
+      assert(typeof port === 'number');
+    });
 
-        it('has initialize method and supports deferred initialization', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.lookupServiceStub, undefined);
-            await client.initialize();
-            assert(client.lookupServiceStub);
-        });
+    it('should create a client with no option', () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient();
+      assert(client);
+    });
 
-        it('has close method for the initialized client', done => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.initialize().catch(err => {throw err});
-            assert(client.lookupServiceStub);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
-        });
+    it('should create a client with gRPC fallback', () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        fallback: true,
+      });
+      assert(client);
+    });
 
-        it('has close method for the non-initialized client', done => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.lookupServiceStub, undefined);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
-        });
+    it('has initialize method and supports deferred initialization', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      assert.strictEqual(client.lookupServiceStub, undefined);
+      await client.initialize();
+      assert(client.lookupServiceStub);
+    });
 
-        it('has getProjectId method', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
-            const result = await client.getProjectId();
-            assert.strictEqual(result, fakeProjectId);
-            assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+    it('has close method for the initialized client', (done) => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.initialize().catch((err) => {
+        throw err;
+      });
+      assert(client.lookupServiceStub);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
+    });
 
-        it('has getProjectId method with callback', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId);
-            const promise = new Promise((resolve, reject) => {
-                client.getProjectId((err?: Error|null, projectId?: string|null) => {
-                    if (err) {
-                        reject(err);
-                    } else {
-                        resolve(projectId);
-                    }
-                });
-            });
-            const result = await promise;
-            assert.strictEqual(result, fakeProjectId);
+    it('has close method for the non-initialized client', (done) => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      assert.strictEqual(client.lookupServiceStub, undefined);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
     });
 
-    describe('resolveService', () => {
-        it('invokes resolveService without error', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceResponse()
-            );
-            client.innerApiCalls.resolveService = stubSimpleCall(expectedResponse);
-            const [response] = await client.resolveService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('has getProjectId method', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
+      const result = await client.getProjectId();
+      assert.strictEqual(result, fakeProjectId);
+      assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+    });
 
-        it('invokes resolveService without error using callback', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceResponse()
-            );
-            client.innerApiCalls.resolveService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.resolveService(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('has getProjectId method with callback', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.auth.getProjectId = sinon
+        .stub()
+        .callsArgWith(0, null, fakeProjectId);
+      const promise = new Promise((resolve, reject) => {
+        client.getProjectId((err?: Error | null, projectId?: string | null) => {
+          if (err) {
+            reject(err);
+          } else {
+            resolve(projectId);
+          }
         });
+      });
+      const result = await promise;
+      assert.strictEqual(result, fakeProjectId);
+    });
+  });
+
+  describe('resolveService', () => {
+    it('invokes resolveService without error', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceResponse(),
+      );
+      client.innerApiCalls.resolveService = stubSimpleCall(expectedResponse);
+      const [response] = await client.resolveService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes resolveService with error', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.resolveService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.resolveService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.resolveService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes resolveService without error using callback', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceResponse(),
+      );
+      client.innerApiCalls.resolveService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.resolveService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.IResolveServiceResponse | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes resolveService with closed client', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.resolveService(request), expectedError);
-        });
+    it('invokes resolveService with error', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.resolveService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.resolveService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.resolveService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
-    describe('getLocation', () => {
-        it('invokes getLocation without error', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
-            const response = await client.getLocation(request, expectedOptions);
-            assert.deepStrictEqual(response, [expectedResponse]);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
-        it('invokes getLocation without error using callback', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = sinon.stub().callsArgWith(2, null, expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getLocation(
-                    request,
-                    expectedOptions,
-                    (
-                        err?: Error | null,
-                        result?: LocationProtos.google.cloud.location.ILocation | null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0));
-        });
-        it('invokes getLocation with error', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedError = new Error('expected');
-            client.locationsClient.getLocation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getLocation(request, expectedOptions), expectedError);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
+
+    it('invokes resolveService with closed client', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ResolveServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.resolveService(request), expectedError);
+    });
+  });
+  describe('getLocation', () => {
+    it('invokes getLocation without error', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
+      const response = await client.getLocation(request, expectedOptions);
+      assert.deepStrictEqual(response, [expectedResponse]);
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
     });
-    describe('listLocationsAsync', () => {
-        it('uses async iteration with listLocations without error', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-                new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedResponse = [
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-            ];
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-            const iterable = client.listLocationsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+    it('invokes getLocation without error using callback', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = sinon
+        .stub()
+        .callsArgWith(2, null, expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getLocation(
+          request,
+          expectedOptions,
+          (
+            err?: Error | null,
+            result?: LocationProtos.google.cloud.location.ILocation | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-        it('uses async iteration with listLocations with error', async () => {
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedError = new Error('expected');
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listLocationsAsync(request);
-            await assert.rejects(async () => {
-                const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      assert((client.locationsClient.getLocation as SinonStub).getCall(0));
+    });
+    it('invokes getLocation with error', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedError = new Error('expected');
+      client.locationsClient.getLocation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.getLocation(request, expectedOptions),
+        expectedError,
+      );
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
+    });
+  });
+  describe('listLocationsAsync', () => {
+    it('uses async iteration with listLocations without error', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedResponse = [
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+      ];
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+      const iterable = client.listLocationsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+    it('uses async iteration with listLocations with error', async () => {
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedError = new Error('expected');
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listLocationsAsync(request);
+      await assert.rejects(async () => {
+        const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+  });
+
+  describe('Path templates', () => {
+    describe('endpoint', async () => {
+      const fakePath = '/rendered/path/endpoint';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+        service: 'serviceValue',
+        endpoint: 'endpointValue',
+      };
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.endpointPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.endpointPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('endpointPath', () => {
+        const result = client.endpointPath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+          'serviceValue',
+          'endpointValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.endpointPathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromEndpointName', () => {
+        const result = client.matchProjectFromEndpointName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromEndpointName', () => {
+        const result = client.matchLocationFromEndpointName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromEndpointName', () => {
+        const result = client.matchNamespaceFromEndpointName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchServiceFromEndpointName', () => {
+        const result = client.matchServiceFromEndpointName(fakePath);
+        assert.strictEqual(result, 'serviceValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchEndpointFromEndpointName', () => {
+        const result = client.matchEndpointFromEndpointName(fakePath);
+        assert.strictEqual(result, 'endpointValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
 
-    describe('Path templates', () => {
-
-        describe('endpoint', async () => {
-            const fakePath = "/rendered/path/endpoint";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-                service: "serviceValue",
-                endpoint: "endpointValue",
-            };
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.endpointPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.endpointPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('endpointPath', () => {
-                const result = client.endpointPath("projectValue", "locationValue", "namespaceValue", "serviceValue", "endpointValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.endpointPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromEndpointName', () => {
-                const result = client.matchProjectFromEndpointName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromEndpointName', () => {
-                const result = client.matchLocationFromEndpointName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchNamespaceFromEndpointName', () => {
-                const result = client.matchNamespaceFromEndpointName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchServiceFromEndpointName', () => {
-                const result = client.matchServiceFromEndpointName(fakePath);
-                assert.strictEqual(result, "serviceValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchEndpointFromEndpointName', () => {
-                const result = client.matchEndpointFromEndpointName(fakePath);
-                assert.strictEqual(result, "endpointValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
-
-        describe('namespace', async () => {
-            const fakePath = "/rendered/path/namespace";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-            };
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.namespacePathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.namespacePathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('namespacePath', () => {
-                const result = client.namespacePath("projectValue", "locationValue", "namespaceValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.namespacePathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromNamespaceName', () => {
-                const result = client.matchProjectFromNamespaceName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromNamespaceName', () => {
-                const result = client.matchLocationFromNamespaceName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchNamespaceFromNamespaceName', () => {
-                const result = client.matchNamespaceFromNamespaceName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    describe('namespace', async () => {
+      const fakePath = '/rendered/path/namespace';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+      };
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.namespacePathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.namespacePathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('namespacePath', () => {
+        const result = client.namespacePath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.namespacePathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromNamespaceName', () => {
+        const result = client.matchProjectFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromNamespaceName', () => {
+        const result = client.matchLocationFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromNamespaceName', () => {
+        const result = client.matchNamespaceFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+    });
 
-        describe('service', async () => {
-            const fakePath = "/rendered/path/service";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-                service: "serviceValue",
-            };
-            const client = new lookupserviceModule.v1beta1.LookupServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.servicePathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.servicePathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('servicePath', () => {
-                const result = client.servicePath("projectValue", "locationValue", "namespaceValue", "serviceValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.servicePathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromServiceName', () => {
-                const result = client.matchProjectFromServiceName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromServiceName', () => {
-                const result = client.matchLocationFromServiceName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchNamespaceFromServiceName', () => {
-                const result = client.matchNamespaceFromServiceName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchServiceFromServiceName', () => {
-                const result = client.matchServiceFromServiceName(fakePath);
-                assert.strictEqual(result, "serviceValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    describe('service', async () => {
+      const fakePath = '/rendered/path/service';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+        service: 'serviceValue',
+      };
+      const client = new lookupserviceModule.v1beta1.LookupServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.servicePathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.servicePathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('servicePath', () => {
+        const result = client.servicePath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+          'serviceValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.servicePathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromServiceName', () => {
+        const result = client.matchProjectFromServiceName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromServiceName', () => {
+        const result = client.matchLocationFromServiceName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromServiceName', () => {
+        const result = client.matchNamespaceFromServiceName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchServiceFromServiceName', () => {
+        const result = client.matchServiceFromServiceName(fakePath);
+        assert.strictEqual(result, 'serviceValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
+  });
 });
diff --git a/packages/google-cloud-servicedirectory/test/gapic_registration_service_v1.ts b/packages/google-cloud-servicedirectory/test/gapic_registration_service_v1.ts
index 9770643d388d..bb7a5eccaef4 100644
--- a/packages/google-cloud-servicedirectory/test/gapic_registration_service_v1.ts
+++ b/packages/google-cloud-servicedirectory/test/gapic_registration_service_v1.ts
@@ -19,2979 +19,3958 @@
 import * as protos from '../protos/protos';
 import * as assert from 'assert';
 import * as sinon from 'sinon';
-import {SinonStub} from 'sinon';
-import {describe, it} from 'mocha';
+import { SinonStub } from 'sinon';
+import { describe, it } from 'mocha';
 import * as registrationserviceModule from '../src';
 
-import {PassThrough} from 'stream';
+import { PassThrough } from 'stream';
 
-import {protobuf, LocationProtos} from 'google-gax';
+import { protobuf, LocationProtos } from 'google-gax';
 
 // Dynamically loaded proto JSON is needed to get the type information
 // to fill in default values for request objects
-const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll();
+const root = protobuf.Root.fromJSON(
+  require('../protos/protos.json'),
+).resolveAll();
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
 function getTypeDefaultValue(typeName: string, fields: string[]) {
-    let type = root.lookupType(typeName) as protobuf.Type;
-    for (const field of fields.slice(0, -1)) {
-        type = type.fields[field]?.resolvedType as protobuf.Type;
-    }
-    return type.fields[fields[fields.length - 1]]?.defaultValue;
+  let type = root.lookupType(typeName) as protobuf.Type;
+  for (const field of fields.slice(0, -1)) {
+    type = type.fields[field]?.resolvedType as protobuf.Type;
+  }
+  return type.fields[fields[fields.length - 1]]?.defaultValue;
 }
 
 function generateSampleMessage<T extends object>(instance: T) {
-    const filledObject = (instance.constructor as typeof protobuf.Message)
-        .toObject(instance as protobuf.Message<T>, {defaults: true});
-    return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T;
+  const filledObject = (
+    instance.constructor as typeof protobuf.Message
+  ).toObject(instance as protobuf.Message<T>, { defaults: true });
+  return (instance.constructor as typeof protobuf.Message).fromObject(
+    filledObject,
+  ) as T;
 }
 
 function stubSimpleCall<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]);
+  return error
+    ? sinon.stub().rejects(error)
+    : sinon.stub().resolves([response]);
 }
 
-function stubSimpleCallWithCallback<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response);
+function stubSimpleCallWithCallback<ResponseType>(
+  response?: ResponseType,
+  error?: Error,
+) {
+  return error
+    ? sinon.stub().callsArgWith(2, error)
+    : sinon.stub().callsArgWith(2, null, response);
 }
 
-function stubPageStreamingCall<ResponseType>(responses?: ResponseType[], error?: Error) {
-    const pagingStub = sinon.stub();
-    if (responses) {
-        for (let i = 0; i < responses.length; ++i) {
-            pagingStub.onCall(i).callsArgWith(2, null, responses[i]);
-        }
+function stubPageStreamingCall<ResponseType>(
+  responses?: ResponseType[],
+  error?: Error,
+) {
+  const pagingStub = sinon.stub();
+  if (responses) {
+    for (let i = 0; i < responses.length; ++i) {
+      pagingStub.onCall(i).callsArgWith(2, null, responses[i]);
     }
-    const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub;
-    const mockStream = new PassThrough({
-        objectMode: true,
-        transform: transformStub,
-    });
-    // trigger as many responses as needed
-    if (responses) {
-        for (let i = 0; i < responses.length; ++i) {
-            setImmediate(() => { mockStream.write({}); });
-        }
-        setImmediate(() => { mockStream.end(); });
-    } else {
-        setImmediate(() => { mockStream.write({}); });
-        setImmediate(() => { mockStream.end(); });
+  }
+  const transformStub = error
+    ? sinon.stub().callsArgWith(2, error)
+    : pagingStub;
+  const mockStream = new PassThrough({
+    objectMode: true,
+    transform: transformStub,
+  });
+  // trigger as many responses as needed
+  if (responses) {
+    for (let i = 0; i < responses.length; ++i) {
+      setImmediate(() => {
+        mockStream.write({});
+      });
     }
-    return sinon.stub().returns(mockStream);
+    setImmediate(() => {
+      mockStream.end();
+    });
+  } else {
+    setImmediate(() => {
+      mockStream.write({});
+    });
+    setImmediate(() => {
+      mockStream.end();
+    });
+  }
+  return sinon.stub().returns(mockStream);
 }
 
-function stubAsyncIterationCall<ResponseType>(responses?: ResponseType[], error?: Error) {
-    let counter = 0;
-    const asyncIterable = {
-        [Symbol.asyncIterator]() {
-            return {
-                async next() {
-                    if (error) {
-                        return Promise.reject(error);
-                    }
-                    if (counter >= responses!.length) {
-                        return Promise.resolve({done: true, value: undefined});
-                    }
-                    return Promise.resolve({done: false, value: responses![counter++]});
-                }
-            };
-        }
-    };
-    return sinon.stub().returns(asyncIterable);
+function stubAsyncIterationCall<ResponseType>(
+  responses?: ResponseType[],
+  error?: Error,
+) {
+  let counter = 0;
+  const asyncIterable = {
+    [Symbol.asyncIterator]() {
+      return {
+        async next() {
+          if (error) {
+            return Promise.reject(error);
+          }
+          if (counter >= responses!.length) {
+            return Promise.resolve({ done: true, value: undefined });
+          }
+          return Promise.resolve({ done: false, value: responses![counter++] });
+        },
+      };
+    },
+  };
+  return sinon.stub().returns(asyncIterable);
 }
 
 describe('v1.RegistrationServiceClient', () => {
-    describe('Common methods', () => {
-        it('has apiEndpoint', () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient();
-            const apiEndpoint = client.apiEndpoint;
-            assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
-        });
-
-        it('has universeDomain', () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient();
-            const universeDomain = client.universeDomain;
-            assert.strictEqual(universeDomain, "googleapis.com");
-        });
-
-        if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-            it('throws DeprecationWarning if static servicePath is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const servicePath = registrationserviceModule.v1.RegistrationServiceClient.servicePath;
-                assert.strictEqual(servicePath, 'servicedirectory.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-
-            it('throws DeprecationWarning if static apiEndpoint is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const apiEndpoint = registrationserviceModule.v1.RegistrationServiceClient.apiEndpoint;
-                assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-        }
-        it('sets apiEndpoint according to universe domain camelCase', () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({universeDomain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicedirectory.example.com');
-        });
-
-        it('sets apiEndpoint according to universe domain snakeCase', () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({universe_domain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicedirectory.example.com');
-        });
-
-        if (typeof process === 'object' && 'env' in process) {
-            describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
-                it('sets apiEndpoint from environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new registrationserviceModule.v1.RegistrationServiceClient();
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicedirectory.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-
-                it('value configured in code has priority over environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new registrationserviceModule.v1.RegistrationServiceClient({universeDomain: 'configured.example.com'});
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicedirectory.configured.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-            });
-        }
-        it('does not allow setting both universeDomain and universe_domain', () => {
-            assert.throws(() => { new registrationserviceModule.v1.RegistrationServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); });
-        });
-
-        it('has port', () => {
-            const port = registrationserviceModule.v1.RegistrationServiceClient.port;
-            assert(port);
-            assert(typeof port === 'number');
-        });
-
-        it('should create a client with no option', () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient();
-            assert(client);
-        });
-
-        it('should create a client with gRPC fallback', () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                fallback: true,
-            });
-            assert(client);
-        });
-
-        it('has initialize method and supports deferred initialization', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.registrationServiceStub, undefined);
-            await client.initialize();
-            assert(client.registrationServiceStub);
-        });
-
-        it('has close method for the initialized client', done => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.initialize().catch(err => {throw err});
-            assert(client.registrationServiceStub);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
-        });
-
-        it('has close method for the non-initialized client', done => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.registrationServiceStub, undefined);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
-        });
-
-        it('has getProjectId method', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
-            const result = await client.getProjectId();
-            assert.strictEqual(result, fakeProjectId);
-            assert((client.auth.getProjectId as SinonStub).calledWithExactly());
-        });
-
-        it('has getProjectId method with callback', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId);
-            const promise = new Promise((resolve, reject) => {
-                client.getProjectId((err?: Error|null, projectId?: string|null) => {
-                    if (err) {
-                        reject(err);
-                    } else {
-                        resolve(projectId);
-                    }
-                });
-            });
-            const result = await promise;
-            assert.strictEqual(result, fakeProjectId);
-        });
+  describe('Common methods', () => {
+    it('has apiEndpoint', () => {
+      const client =
+        new registrationserviceModule.v1.RegistrationServiceClient();
+      const apiEndpoint = client.apiEndpoint;
+      assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
     });
 
-    describe('createNamespace', () => {
-        it('invokes createNamespace without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateNamespaceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Namespace()
-            );
-            client.innerApiCalls.createNamespace = stubSimpleCall(expectedResponse);
-            const [response] = await client.createNamespace(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createNamespace without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateNamespaceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Namespace()
-            );
-            client.innerApiCalls.createNamespace = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.createNamespace(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.INamespace|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createNamespace with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateNamespaceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.createNamespace = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.createNamespace(request), expectedError);
-            const actualRequest = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('has universeDomain', () => {
+      const client =
+        new registrationserviceModule.v1.RegistrationServiceClient();
+      const universeDomain = client.universeDomain;
+      assert.strictEqual(universeDomain, 'googleapis.com');
+    });
 
-        it('invokes createNamespace with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateNamespaceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.createNamespace(request), expectedError);
-        });
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      it('throws DeprecationWarning if static servicePath is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const servicePath =
+          registrationserviceModule.v1.RegistrationServiceClient.servicePath;
+        assert.strictEqual(servicePath, 'servicedirectory.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+
+      it('throws DeprecationWarning if static apiEndpoint is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const apiEndpoint =
+          registrationserviceModule.v1.RegistrationServiceClient.apiEndpoint;
+        assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+    }
+    it('sets apiEndpoint according to universe domain camelCase', () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        { universeDomain: 'example.com' },
+      );
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicedirectory.example.com');
     });
 
-    describe('getNamespace', () => {
-        it('invokes getNamespace without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Namespace()
-            );
-            client.innerApiCalls.getNamespace = stubSimpleCall(expectedResponse);
-            const [response] = await client.getNamespace(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('sets apiEndpoint according to universe domain snakeCase', () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        { universe_domain: 'example.com' },
+      );
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicedirectory.example.com');
+    });
 
-        it('invokes getNamespace without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Namespace()
-            );
-            client.innerApiCalls.getNamespace = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getNamespace(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.INamespace|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    if (typeof process === 'object' && 'env' in process) {
+      describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
+        it('sets apiEndpoint from environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client =
+            new registrationserviceModule.v1.RegistrationServiceClient();
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(servicePath, 'servicedirectory.example.com');
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
+        });
+
+        it('value configured in code has priority over environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client =
+            new registrationserviceModule.v1.RegistrationServiceClient({
+              universeDomain: 'configured.example.com',
+            });
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(
+            servicePath,
+            'servicedirectory.configured.example.com',
+          );
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
+        });
+      });
+    }
+    it('does not allow setting both universeDomain and universe_domain', () => {
+      assert.throws(() => {
+        new registrationserviceModule.v1.RegistrationServiceClient({
+          universe_domain: 'example.com',
+          universeDomain: 'example.net',
         });
+      });
+    });
 
-        it('invokes getNamespace with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getNamespace = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getNamespace(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('has port', () => {
+      const port = registrationserviceModule.v1.RegistrationServiceClient.port;
+      assert(port);
+      assert(typeof port === 'number');
+    });
 
-        it('invokes getNamespace with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getNamespace(request), expectedError);
-        });
+    it('should create a client with no option', () => {
+      const client =
+        new registrationserviceModule.v1.RegistrationServiceClient();
+      assert(client);
     });
 
-    describe('updateNamespace', () => {
-        it('invokes updateNamespace without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateNamespaceRequest()
-            );
-            request.namespace ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateNamespaceRequest', ['namespace', 'name']);
-            request.namespace.name = defaultValue1;
-            const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Namespace()
-            );
-            client.innerApiCalls.updateNamespace = stubSimpleCall(expectedResponse);
-            const [response] = await client.updateNamespace(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('should create a client with gRPC fallback', () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          fallback: true,
+        },
+      );
+      assert(client);
+    });
 
-        it('invokes updateNamespace without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateNamespaceRequest()
-            );
-            request.namespace ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateNamespaceRequest', ['namespace', 'name']);
-            request.namespace.name = defaultValue1;
-            const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Namespace()
-            );
-            client.innerApiCalls.updateNamespace = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.updateNamespace(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.INamespace|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('has initialize method and supports deferred initialization', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      assert.strictEqual(client.registrationServiceStub, undefined);
+      await client.initialize();
+      assert(client.registrationServiceStub);
+    });
 
-        it('invokes updateNamespace with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateNamespaceRequest()
-            );
-            request.namespace ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateNamespaceRequest', ['namespace', 'name']);
-            request.namespace.name = defaultValue1;
-            const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.updateNamespace = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.updateNamespace(request), expectedError);
-            const actualRequest = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('has close method for the initialized client', (done) => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      client.initialize().catch((err) => {
+        throw err;
+      });
+      assert(client.registrationServiceStub);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
+    });
 
-        it('invokes updateNamespace with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateNamespaceRequest()
-            );
-            request.namespace ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateNamespaceRequest', ['namespace', 'name']);
-            request.namespace.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.updateNamespace(request), expectedError);
+    it('has close method for the non-initialized client', (done) => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      assert.strictEqual(client.registrationServiceStub, undefined);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
     });
 
-    describe('deleteNamespace', () => {
-        it('invokes deleteNamespace without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteNamespace = stubSimpleCall(expectedResponse);
-            const [response] = await client.deleteNamespace(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('has getProjectId method', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
+      const result = await client.getProjectId();
+      assert.strictEqual(result, fakeProjectId);
+      assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+    });
 
-        it('invokes deleteNamespace without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteNamespace = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.deleteNamespace(
-                    request,
-                    (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('has getProjectId method with callback', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      client.auth.getProjectId = sinon
+        .stub()
+        .callsArgWith(0, null, fakeProjectId);
+      const promise = new Promise((resolve, reject) => {
+        client.getProjectId((err?: Error | null, projectId?: string | null) => {
+          if (err) {
+            reject(err);
+          } else {
+            resolve(projectId);
+          }
+        });
+      });
+      const result = await promise;
+      assert.strictEqual(result, fakeProjectId);
+    });
+  });
+
+  describe('createNamespace', () => {
+    it('invokes createNamespace without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateNamespaceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Namespace(),
+      );
+      client.innerApiCalls.createNamespace = stubSimpleCall(expectedResponse);
+      const [response] = await client.createNamespace(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes deleteNamespace with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.deleteNamespace = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.deleteNamespace(request), expectedError);
-            const actualRequest = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes createNamespace without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateNamespaceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Namespace(),
+      );
+      client.innerApiCalls.createNamespace =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.createNamespace(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.INamespace | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes deleteNamespace with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.deleteNamespace(request), expectedError);
-        });
+    it('invokes createNamespace with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateNamespaceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.createNamespace = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.createNamespace(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('createService', () => {
-        it('invokes createService without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateServiceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Service()
-            );
-            client.innerApiCalls.createService = stubSimpleCall(expectedResponse);
-            const [response] = await client.createService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes createNamespace with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateNamespaceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.createNamespace(request), expectedError);
+    });
+  });
+
+  describe('getNamespace', () => {
+    it('invokes getNamespace without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Namespace(),
+      );
+      client.innerApiCalls.getNamespace = stubSimpleCall(expectedResponse);
+      const [response] = await client.getNamespace(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes createService without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateServiceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Service()
-            );
-            client.innerApiCalls.createService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.createService(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.IService|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getNamespace without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Namespace(),
+      );
+      client.innerApiCalls.getNamespace =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getNamespace(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.INamespace | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes createService with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateServiceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.createService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.createService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getNamespace with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getNamespace = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getNamespace(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes createService with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateServiceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.createService(request), expectedError);
-        });
+    it('invokes getNamespace with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getNamespace(request), expectedError);
+    });
+  });
+
+  describe('updateNamespace', () => {
+    it('invokes updateNamespace without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateNamespaceRequest(),
+      );
+      request.namespace ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateNamespaceRequest',
+        ['namespace', 'name'],
+      );
+      request.namespace.name = defaultValue1;
+      const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Namespace(),
+      );
+      client.innerApiCalls.updateNamespace = stubSimpleCall(expectedResponse);
+      const [response] = await client.updateNamespace(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('getService', () => {
-        it('invokes getService without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Service()
-            );
-            client.innerApiCalls.getService = stubSimpleCall(expectedResponse);
-            const [response] = await client.getService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes updateNamespace without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateNamespaceRequest(),
+      );
+      request.namespace ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateNamespaceRequest',
+        ['namespace', 'name'],
+      );
+      request.namespace.name = defaultValue1;
+      const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Namespace(),
+      );
+      client.innerApiCalls.updateNamespace =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.updateNamespace(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.INamespace | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getService without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Service()
-            );
-            client.innerApiCalls.getService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getService(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.IService|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes updateNamespace with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateNamespaceRequest(),
+      );
+      request.namespace ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateNamespaceRequest',
+        ['namespace', 'name'],
+      );
+      request.namespace.name = defaultValue1;
+      const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.updateNamespace = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.updateNamespace(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getService with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes updateNamespace with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateNamespaceRequest(),
+      );
+      request.namespace ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateNamespaceRequest',
+        ['namespace', 'name'],
+      );
+      request.namespace.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.updateNamespace(request), expectedError);
+    });
+  });
+
+  describe('deleteNamespace', () => {
+    it('invokes deleteNamespace without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteNamespace = stubSimpleCall(expectedResponse);
+      const [response] = await client.deleteNamespace(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getService with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getService(request), expectedError);
-        });
+    it('invokes deleteNamespace without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteNamespace =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.deleteNamespace(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.protobuf.IEmpty | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('updateService', () => {
-        it('invokes updateService without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateServiceRequest()
-            );
-            request.service ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateServiceRequest', ['service', 'name']);
-            request.service.name = defaultValue1;
-            const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Service()
-            );
-            client.innerApiCalls.updateService = stubSimpleCall(expectedResponse);
-            const [response] = await client.updateService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes deleteNamespace with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.deleteNamespace = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.deleteNamespace(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes updateService without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateServiceRequest()
-            );
-            request.service ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateServiceRequest', ['service', 'name']);
-            request.service.name = defaultValue1;
-            const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Service()
-            );
-            client.innerApiCalls.updateService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.updateService(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.IService|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes deleteNamespace with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.deleteNamespace(request), expectedError);
+    });
+  });
+
+  describe('createService', () => {
+    it('invokes createService without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateServiceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Service(),
+      );
+      client.innerApiCalls.createService = stubSimpleCall(expectedResponse);
+      const [response] = await client.createService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes updateService with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateServiceRequest()
-            );
-            request.service ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateServiceRequest', ['service', 'name']);
-            request.service.name = defaultValue1;
-            const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.updateService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.updateService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes createService without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateServiceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Service(),
+      );
+      client.innerApiCalls.createService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.createService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.IService | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes updateService with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateServiceRequest()
-            );
-            request.service ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateServiceRequest', ['service', 'name']);
-            request.service.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.updateService(request), expectedError);
-        });
+    it('invokes createService with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateServiceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.createService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.createService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('deleteService', () => {
-        it('invokes deleteService without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteService = stubSimpleCall(expectedResponse);
-            const [response] = await client.deleteService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes createService with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateServiceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.createService(request), expectedError);
+    });
+  });
+
+  describe('getService', () => {
+    it('invokes getService without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Service(),
+      );
+      client.innerApiCalls.getService = stubSimpleCall(expectedResponse);
+      const [response] = await client.getService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes deleteService without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.deleteService(
-                    request,
-                    (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getService without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Service(),
+      );
+      client.innerApiCalls.getService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.IService | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes deleteService with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.deleteService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.deleteService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getService with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes deleteService with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.deleteService(request), expectedError);
-        });
+    it('invokes getService with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getService(request), expectedError);
+    });
+  });
+
+  describe('updateService', () => {
+    it('invokes updateService without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateServiceRequest(),
+      );
+      request.service ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateServiceRequest',
+        ['service', 'name'],
+      );
+      request.service.name = defaultValue1;
+      const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Service(),
+      );
+      client.innerApiCalls.updateService = stubSimpleCall(expectedResponse);
+      const [response] = await client.updateService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('createEndpoint', () => {
-        it('invokes createEndpoint without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateEndpointRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Endpoint()
-            );
-            client.innerApiCalls.createEndpoint = stubSimpleCall(expectedResponse);
-            const [response] = await client.createEndpoint(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes updateService without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateServiceRequest(),
+      );
+      request.service ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateServiceRequest',
+        ['service', 'name'],
+      );
+      request.service.name = defaultValue1;
+      const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Service(),
+      );
+      client.innerApiCalls.updateService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.updateService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.IService | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes createEndpoint without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateEndpointRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Endpoint()
-            );
-            client.innerApiCalls.createEndpoint = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.createEndpoint(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.IEndpoint|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes updateService with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateServiceRequest(),
+      );
+      request.service ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateServiceRequest',
+        ['service', 'name'],
+      );
+      request.service.name = defaultValue1;
+      const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.updateService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.updateService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes createEndpoint with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateEndpointRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.createEndpoint = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.createEndpoint(request), expectedError);
-            const actualRequest = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes updateService with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateServiceRequest(),
+      );
+      request.service ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateServiceRequest',
+        ['service', 'name'],
+      );
+      request.service.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.updateService(request), expectedError);
+    });
+  });
+
+  describe('deleteService', () => {
+    it('invokes deleteService without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteService = stubSimpleCall(expectedResponse);
+      const [response] = await client.deleteService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes createEndpoint with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.CreateEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.CreateEndpointRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.createEndpoint(request), expectedError);
-        });
+    it('invokes deleteService without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.deleteService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.protobuf.IEmpty | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('getEndpoint', () => {
-        it('invokes getEndpoint without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Endpoint()
-            );
-            client.innerApiCalls.getEndpoint = stubSimpleCall(expectedResponse);
-            const [response] = await client.getEndpoint(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes deleteService with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.deleteService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.deleteService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getEndpoint without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Endpoint()
-            );
-            client.innerApiCalls.getEndpoint = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getEndpoint(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.IEndpoint|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes deleteService with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.deleteService(request), expectedError);
+    });
+  });
+
+  describe('createEndpoint', () => {
+    it('invokes createEndpoint without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateEndpointRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Endpoint(),
+      );
+      client.innerApiCalls.createEndpoint = stubSimpleCall(expectedResponse);
+      const [response] = await client.createEndpoint(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getEndpoint with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getEndpoint = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getEndpoint(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes createEndpoint without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateEndpointRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Endpoint(),
+      );
+      client.innerApiCalls.createEndpoint =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.createEndpoint(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.IEndpoint | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getEndpoint with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.GetEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.GetEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getEndpoint(request), expectedError);
-        });
+    it('invokes createEndpoint with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateEndpointRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.createEndpoint = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.createEndpoint(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('updateEndpoint', () => {
-        it('invokes updateEndpoint without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateEndpointRequest()
-            );
-            request.endpoint ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateEndpointRequest', ['endpoint', 'name']);
-            request.endpoint.name = defaultValue1;
-            const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Endpoint()
-            );
-            client.innerApiCalls.updateEndpoint = stubSimpleCall(expectedResponse);
-            const [response] = await client.updateEndpoint(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes createEndpoint with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.CreateEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.CreateEndpointRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.createEndpoint(request), expectedError);
+    });
+  });
+
+  describe('getEndpoint', () => {
+    it('invokes getEndpoint without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Endpoint(),
+      );
+      client.innerApiCalls.getEndpoint = stubSimpleCall(expectedResponse);
+      const [response] = await client.getEndpoint(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes updateEndpoint without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateEndpointRequest()
-            );
-            request.endpoint ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateEndpointRequest', ['endpoint', 'name']);
-            request.endpoint.name = defaultValue1;
-            const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.Endpoint()
-            );
-            client.innerApiCalls.updateEndpoint = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.updateEndpoint(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.IEndpoint|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getEndpoint without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Endpoint(),
+      );
+      client.innerApiCalls.getEndpoint =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getEndpoint(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.IEndpoint | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes updateEndpoint with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateEndpointRequest()
-            );
-            request.endpoint ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateEndpointRequest', ['endpoint', 'name']);
-            request.endpoint.name = defaultValue1;
-            const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.updateEndpoint = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.updateEndpoint(request), expectedError);
-            const actualRequest = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getEndpoint with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getEndpoint = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getEndpoint(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes updateEndpoint with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.UpdateEndpointRequest()
-            );
-            request.endpoint ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.UpdateEndpointRequest', ['endpoint', 'name']);
-            request.endpoint.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.updateEndpoint(request), expectedError);
-        });
+    it('invokes getEndpoint with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.GetEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.GetEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getEndpoint(request), expectedError);
+    });
+  });
+
+  describe('updateEndpoint', () => {
+    it('invokes updateEndpoint without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateEndpointRequest(),
+      );
+      request.endpoint ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateEndpointRequest',
+        ['endpoint', 'name'],
+      );
+      request.endpoint.name = defaultValue1;
+      const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Endpoint(),
+      );
+      client.innerApiCalls.updateEndpoint = stubSimpleCall(expectedResponse);
+      const [response] = await client.updateEndpoint(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('deleteEndpoint', () => {
-        it('invokes deleteEndpoint without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteEndpoint = stubSimpleCall(expectedResponse);
-            const [response] = await client.deleteEndpoint(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes updateEndpoint without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateEndpointRequest(),
+      );
+      request.endpoint ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateEndpointRequest',
+        ['endpoint', 'name'],
+      );
+      request.endpoint.name = defaultValue1;
+      const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.Endpoint(),
+      );
+      client.innerApiCalls.updateEndpoint =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.updateEndpoint(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.IEndpoint | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes deleteEndpoint without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteEndpoint = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.deleteEndpoint(
-                    request,
-                    (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes updateEndpoint with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateEndpointRequest(),
+      );
+      request.endpoint ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateEndpointRequest',
+        ['endpoint', 'name'],
+      );
+      request.endpoint.name = defaultValue1;
+      const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.updateEndpoint = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.updateEndpoint(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes deleteEndpoint with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.deleteEndpoint = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.deleteEndpoint(request), expectedError);
-            const actualRequest = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes updateEndpoint with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.UpdateEndpointRequest(),
+      );
+      request.endpoint ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.UpdateEndpointRequest',
+        ['endpoint', 'name'],
+      );
+      request.endpoint.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.updateEndpoint(request), expectedError);
+    });
+  });
+
+  describe('deleteEndpoint', () => {
+    it('invokes deleteEndpoint without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteEndpoint = stubSimpleCall(expectedResponse);
+      const [response] = await client.deleteEndpoint(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes deleteEndpoint with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.DeleteEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.DeleteEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.deleteEndpoint(request), expectedError);
-        });
+    it('invokes deleteEndpoint without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteEndpoint =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.deleteEndpoint(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.protobuf.IEmpty | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('getIamPolicy', () => {
-        it('invokes getIamPolicy without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.GetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.GetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.Policy()
-            );
-            client.innerApiCalls.getIamPolicy = stubSimpleCall(expectedResponse);
-            const [response] = await client.getIamPolicy(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes deleteEndpoint with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.deleteEndpoint = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.deleteEndpoint(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getIamPolicy without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.GetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.GetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.Policy()
-            );
-            client.innerApiCalls.getIamPolicy = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getIamPolicy(
-                    request,
-                    (err?: Error|null, result?: protos.google.iam.v1.IPolicy|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes deleteEndpoint with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.DeleteEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.DeleteEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.deleteEndpoint(request), expectedError);
+    });
+  });
+
+  describe('getIamPolicy', () => {
+    it('invokes getIamPolicy without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.GetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.GetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.Policy(),
+      );
+      client.innerApiCalls.getIamPolicy = stubSimpleCall(expectedResponse);
+      const [response] = await client.getIamPolicy(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getIamPolicy with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.GetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.GetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getIamPolicy = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getIamPolicy(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getIamPolicy without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.GetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.GetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.Policy(),
+      );
+      client.innerApiCalls.getIamPolicy =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getIamPolicy(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.iam.v1.IPolicy | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getIamPolicy with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.GetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.GetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getIamPolicy(request), expectedError);
-        });
+    it('invokes getIamPolicy with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.GetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.GetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getIamPolicy = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getIamPolicy(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('setIamPolicy', () => {
-        it('invokes setIamPolicy without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.SetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.SetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.Policy()
-            );
-            client.innerApiCalls.setIamPolicy = stubSimpleCall(expectedResponse);
-            const [response] = await client.setIamPolicy(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getIamPolicy with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.GetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.GetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getIamPolicy(request), expectedError);
+    });
+  });
+
+  describe('setIamPolicy', () => {
+    it('invokes setIamPolicy without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.SetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.SetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.Policy(),
+      );
+      client.innerApiCalls.setIamPolicy = stubSimpleCall(expectedResponse);
+      const [response] = await client.setIamPolicy(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes setIamPolicy without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.SetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.SetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.Policy()
-            );
-            client.innerApiCalls.setIamPolicy = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.setIamPolicy(
-                    request,
-                    (err?: Error|null, result?: protos.google.iam.v1.IPolicy|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes setIamPolicy without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.SetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.SetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.Policy(),
+      );
+      client.innerApiCalls.setIamPolicy =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.setIamPolicy(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.iam.v1.IPolicy | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes setIamPolicy with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.SetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.SetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.setIamPolicy = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.setIamPolicy(request), expectedError);
-            const actualRequest = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes setIamPolicy with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.SetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.SetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.setIamPolicy = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.setIamPolicy(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes setIamPolicy with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.SetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.SetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.setIamPolicy(request), expectedError);
-        });
+    it('invokes setIamPolicy with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.SetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.SetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.setIamPolicy(request), expectedError);
+    });
+  });
+
+  describe('testIamPermissions', () => {
+    it('invokes testIamPermissions without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.TestIamPermissionsRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsResponse(),
+      );
+      client.innerApiCalls.testIamPermissions =
+        stubSimpleCall(expectedResponse);
+      const [response] = await client.testIamPermissions(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('testIamPermissions', () => {
-        it('invokes testIamPermissions without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.TestIamPermissionsRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsResponse()
-            );
-            client.innerApiCalls.testIamPermissions = stubSimpleCall(expectedResponse);
-            const [response] = await client.testIamPermissions(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes testIamPermissions without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.TestIamPermissionsRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsResponse(),
+      );
+      client.innerApiCalls.testIamPermissions =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.testIamPermissions(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.iam.v1.ITestIamPermissionsResponse | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes testIamPermissions without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.TestIamPermissionsRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsResponse()
-            );
-            client.innerApiCalls.testIamPermissions = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.testIamPermissions(
-                    request,
-                    (err?: Error|null, result?: protos.google.iam.v1.ITestIamPermissionsResponse|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes testIamPermissions with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.TestIamPermissionsRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.testIamPermissions = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.testIamPermissions(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes testIamPermissions with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.TestIamPermissionsRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.testIamPermissions = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.testIamPermissions(request), expectedError);
-            const actualRequest = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes testIamPermissions with closed client', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.TestIamPermissionsRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.testIamPermissions(request), expectedError);
+    });
+  });
+
+  describe('listNamespaces', () => {
+    it('invokes listNamespaces without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+      ];
+      client.innerApiCalls.listNamespaces = stubSimpleCall(expectedResponse);
+      const [response] = await client.listNamespaces(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes testIamPermissions with closed client', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.TestIamPermissionsRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.testIamPermissions(request), expectedError);
-        });
+    it('invokes listNamespaces without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+      ];
+      client.innerApiCalls.listNamespaces =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.listNamespaces(
+          request,
+          (
+            err?: Error | null,
+            result?:
+              | protos.google.cloud.servicedirectory.v1.INamespace[]
+              | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('listNamespaces', () => {
-        it('invokes listNamespaces without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-            ];
-            client.innerApiCalls.listNamespaces = stubSimpleCall(expectedResponse);
-            const [response] = await client.listNamespaces(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes listNamespaces with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.listNamespaces = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.listNamespaces(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes listNamespaces without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-            ];
-            client.innerApiCalls.listNamespaces = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.listNamespaces(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.INamespace[]|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes listNamespacesStream without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+      ];
+      client.descriptors.page.listNamespaces.createStream =
+        stubPageStreamingCall(expectedResponse);
+      const stream = client.listNamespacesStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1.Namespace[] =
+          [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1.Namespace) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      const responses = await promise;
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert(
+        (client.descriptors.page.listNamespaces.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listNamespaces, request),
+      );
+      assert(
+        (client.descriptors.page.listNamespaces.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('invokes listNamespaces with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.listNamespaces = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.listNamespaces(request), expectedError);
-            const actualRequest = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes listNamespacesStream with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listNamespaces.createStream =
+        stubPageStreamingCall(undefined, expectedError);
+      const stream = client.listNamespacesStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1.Namespace[] =
+          [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1.Namespace) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      await assert.rejects(promise, expectedError);
+      assert(
+        (client.descriptors.page.listNamespaces.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listNamespaces, request),
+      );
+      assert(
+        (client.descriptors.page.listNamespaces.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('invokes listNamespacesStream without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-            ];
-            client.descriptors.page.listNamespaces.createStream = stubPageStreamingCall(expectedResponse);
-            const stream = client.listNamespacesStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1.Namespace[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1.Namespace) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            const responses = await promise;
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert((client.descriptors.page.listNamespaces.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listNamespaces, request));
-            assert(
-                (client.descriptors.page.listNamespaces.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('uses async iteration with listNamespaces without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Namespace(),
+        ),
+      ];
+      client.descriptors.page.listNamespaces.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: protos.google.cloud.servicedirectory.v1.INamespace[] =
+        [];
+      const iterable = client.listNamespacesAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listNamespaces.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('invokes listNamespacesStream with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listNamespaces.createStream = stubPageStreamingCall(undefined, expectedError);
-            const stream = client.listNamespacesStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1.Namespace[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1.Namespace) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            await assert.rejects(promise, expectedError);
-            assert((client.descriptors.page.listNamespaces.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listNamespaces, request));
-            assert(
-                (client.descriptors.page.listNamespaces.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                         expectedHeaderRequestParams
-                    ) 
-            );
-        });
+    it('uses async iteration with listNamespaces with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listNamespaces.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listNamespacesAsync(request);
+      await assert.rejects(async () => {
+        const responses: protos.google.cloud.servicedirectory.v1.INamespace[] =
+          [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listNamespaces.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+  });
+
+  describe('listServices', () => {
+    it('invokes listServices without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+      ];
+      client.innerApiCalls.listServices = stubSimpleCall(expectedResponse);
+      const [response] = await client.listServices(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('uses async iteration with listNamespaces without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Namespace()),
-            ];
-            client.descriptors.page.listNamespaces.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: protos.google.cloud.servicedirectory.v1.INamespace[] = [];
-            const iterable = client.listNamespacesAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+    it('invokes listServices without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+      ];
+      client.innerApiCalls.listServices =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.listServices(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.IService[] | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-
-        it('uses async iteration with listNamespaces with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listNamespaces.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listNamespacesAsync(request);
-            await assert.rejects(async () => {
-                const responses: protos.google.cloud.servicedirectory.v1.INamespace[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('listServices', () => {
-        it('invokes listServices without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-            ];
-            client.innerApiCalls.listServices = stubSimpleCall(expectedResponse);
-            const [response] = await client.listServices(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes listServices with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.listServices = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.listServices(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes listServices without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-            ];
-            client.innerApiCalls.listServices = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.listServices(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.IService[]|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes listServicesStream without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+      ];
+      client.descriptors.page.listServices.createStream =
+        stubPageStreamingCall(expectedResponse);
+      const stream = client.listServicesStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1.Service[] = [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1.Service) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      const responses = await promise;
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert(
+        (client.descriptors.page.listServices.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listServices, request),
+      );
+      assert(
+        (client.descriptors.page.listServices.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('invokes listServices with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.listServices = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.listServices(request), expectedError);
-            const actualRequest = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes listServicesStream with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listServices.createStream = stubPageStreamingCall(
+        undefined,
+        expectedError,
+      );
+      const stream = client.listServicesStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1.Service[] = [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1.Service) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      await assert.rejects(promise, expectedError);
+      assert(
+        (client.descriptors.page.listServices.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listServices, request),
+      );
+      assert(
+        (client.descriptors.page.listServices.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('invokes listServicesStream without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-            ];
-            client.descriptors.page.listServices.createStream = stubPageStreamingCall(expectedResponse);
-            const stream = client.listServicesStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1.Service[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1.Service) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            const responses = await promise;
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert((client.descriptors.page.listServices.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listServices, request));
-            assert(
-                (client.descriptors.page.listServices.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('uses async iteration with listServices without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Service(),
+        ),
+      ];
+      client.descriptors.page.listServices.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: protos.google.cloud.servicedirectory.v1.IService[] = [];
+      const iterable = client.listServicesAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listServices.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listServices.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('invokes listServicesStream with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listServices.createStream = stubPageStreamingCall(undefined, expectedError);
-            const stream = client.listServicesStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1.Service[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1.Service) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            await assert.rejects(promise, expectedError);
-            assert((client.descriptors.page.listServices.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listServices, request));
-            assert(
-                (client.descriptors.page.listServices.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                         expectedHeaderRequestParams
-                    ) 
-            );
-        });
+    it('uses async iteration with listServices with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listServices.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listServicesAsync(request);
+      await assert.rejects(async () => {
+        const responses: protos.google.cloud.servicedirectory.v1.IService[] =
+          [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listServices.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listServices.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+  });
+
+  describe('listEndpoints', () => {
+    it('invokes listEndpoints without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+      ];
+      client.innerApiCalls.listEndpoints = stubSimpleCall(expectedResponse);
+      const [response] = await client.listEndpoints(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('uses async iteration with listServices without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Service()),
-            ];
-            client.descriptors.page.listServices.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: protos.google.cloud.servicedirectory.v1.IService[] = [];
-            const iterable = client.listServicesAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+    it('invokes listEndpoints without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+      ];
+      client.innerApiCalls.listEndpoints =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.listEndpoints(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1.IEndpoint[] | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.descriptors.page.listServices.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listServices.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-
-        it('uses async iteration with listServices with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listServices.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listServicesAsync(request);
-            await assert.rejects(async () => {
-                const responses: protos.google.cloud.servicedirectory.v1.IService[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.descriptors.page.listServices.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listServices.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('listEndpoints', () => {
-        it('invokes listEndpoints without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-            ];
-            client.innerApiCalls.listEndpoints = stubSimpleCall(expectedResponse);
-            const [response] = await client.listEndpoints(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listEndpoints without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-            ];
-            client.innerApiCalls.listEndpoints = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.listEndpoints(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1.IEndpoint[]|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listEndpoints with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.listEndpoints = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.listEndpoints(request), expectedError);
-            const actualRequest = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes listEndpoints with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.listEndpoints = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.listEndpoints(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes listEndpointsStream without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-            ];
-            client.descriptors.page.listEndpoints.createStream = stubPageStreamingCall(expectedResponse);
-            const stream = client.listEndpointsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1.Endpoint[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1.Endpoint) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            const responses = await promise;
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert((client.descriptors.page.listEndpoints.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listEndpoints, request));
-            assert(
-                (client.descriptors.page.listEndpoints.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('invokes listEndpointsStream without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+      ];
+      client.descriptors.page.listEndpoints.createStream =
+        stubPageStreamingCall(expectedResponse);
+      const stream = client.listEndpointsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1.Endpoint[] =
+          [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1.Endpoint) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      const responses = await promise;
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert(
+        (client.descriptors.page.listEndpoints.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listEndpoints, request),
+      );
+      assert(
+        (client.descriptors.page.listEndpoints.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('invokes listEndpointsStream with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listEndpoints.createStream = stubPageStreamingCall(undefined, expectedError);
-            const stream = client.listEndpointsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1.Endpoint[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1.Endpoint) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            await assert.rejects(promise, expectedError);
-            assert((client.descriptors.page.listEndpoints.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listEndpoints, request));
-            assert(
-                (client.descriptors.page.listEndpoints.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                         expectedHeaderRequestParams
-                    ) 
-            );
-        });
+    it('invokes listEndpointsStream with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listEndpoints.createStream =
+        stubPageStreamingCall(undefined, expectedError);
+      const stream = client.listEndpointsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1.Endpoint[] =
+          [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1.Endpoint) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      await assert.rejects(promise, expectedError);
+      assert(
+        (client.descriptors.page.listEndpoints.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listEndpoints, request),
+      );
+      assert(
+        (client.descriptors.page.listEndpoints.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('uses async iteration with listEndpoints without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1.Endpoint()),
-            ];
-            client.descriptors.page.listEndpoints.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: protos.google.cloud.servicedirectory.v1.IEndpoint[] = [];
-            const iterable = client.listEndpointsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
-            }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('uses async iteration with listEndpoints without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1.Endpoint(),
+        ),
+      ];
+      client.descriptors.page.listEndpoints.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: protos.google.cloud.servicedirectory.v1.IEndpoint[] = [];
+      const iterable = client.listEndpointsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listEndpoints.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('uses async iteration with listEndpoints with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listEndpoints.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listEndpointsAsync(request);
-            await assert.rejects(async () => {
-                const responses: protos.google.cloud.servicedirectory.v1.IEndpoint[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('uses async iteration with listEndpoints with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listEndpoints.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listEndpointsAsync(request);
+      await assert.rejects(async () => {
+        const responses: protos.google.cloud.servicedirectory.v1.IEndpoint[] =
+          [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listEndpoints.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
     });
-    describe('getLocation', () => {
-        it('invokes getLocation without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
-            const response = await client.getLocation(request, expectedOptions);
-            assert.deepStrictEqual(response, [expectedResponse]);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
-        it('invokes getLocation without error using callback', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = sinon.stub().callsArgWith(2, null, expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getLocation(
-                    request,
-                    expectedOptions,
-                    (
-                        err?: Error | null,
-                        result?: LocationProtos.google.cloud.location.ILocation | null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0));
-        });
-        it('invokes getLocation with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedError = new Error('expected');
-            client.locationsClient.getLocation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getLocation(request, expectedOptions), expectedError);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
+  });
+  describe('getLocation', () => {
+    it('invokes getLocation without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
+      const response = await client.getLocation(request, expectedOptions);
+      assert.deepStrictEqual(response, [expectedResponse]);
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
     });
-    describe('listLocationsAsync', () => {
-        it('uses async iteration with listLocations without error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-                new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedResponse = [
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-            ];
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-            const iterable = client.listLocationsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+    it('invokes getLocation without error using callback', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = sinon
+        .stub()
+        .callsArgWith(2, null, expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getLocation(
+          request,
+          expectedOptions,
+          (
+            err?: Error | null,
+            result?: LocationProtos.google.cloud.location.ILocation | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-        it('uses async iteration with listLocations with error', async () => {
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedError = new Error('expected');
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listLocationsAsync(request);
-            await assert.rejects(async () => {
-                const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      assert((client.locationsClient.getLocation as SinonStub).getCall(0));
+    });
+    it('invokes getLocation with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedError = new Error('expected');
+      client.locationsClient.getLocation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.getLocation(request, expectedOptions),
+        expectedError,
+      );
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
+    });
+  });
+  describe('listLocationsAsync', () => {
+    it('uses async iteration with listLocations without error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedResponse = [
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+      ];
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+      const iterable = client.listLocationsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+    it('uses async iteration with listLocations with error', async () => {
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedError = new Error('expected');
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listLocationsAsync(request);
+      await assert.rejects(async () => {
+        const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+  });
+
+  describe('Path templates', () => {
+    describe('endpoint', async () => {
+      const fakePath = '/rendered/path/endpoint';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+        service: 'serviceValue',
+        endpoint: 'endpointValue',
+      };
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      client.pathTemplates.endpointPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.endpointPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('endpointPath', () => {
+        const result = client.endpointPath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+          'serviceValue',
+          'endpointValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.endpointPathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromEndpointName', () => {
+        const result = client.matchProjectFromEndpointName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromEndpointName', () => {
+        const result = client.matchLocationFromEndpointName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromEndpointName', () => {
+        const result = client.matchNamespaceFromEndpointName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchServiceFromEndpointName', () => {
+        const result = client.matchServiceFromEndpointName(fakePath);
+        assert.strictEqual(result, 'serviceValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchEndpointFromEndpointName', () => {
+        const result = client.matchEndpointFromEndpointName(fakePath);
+        assert.strictEqual(result, 'endpointValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
 
-    describe('Path templates', () => {
-
-        describe('endpoint', async () => {
-            const fakePath = "/rendered/path/endpoint";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-                service: "serviceValue",
-                endpoint: "endpointValue",
-            };
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.endpointPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.endpointPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('endpointPath', () => {
-                const result = client.endpointPath("projectValue", "locationValue", "namespaceValue", "serviceValue", "endpointValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.endpointPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromEndpointName', () => {
-                const result = client.matchProjectFromEndpointName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromEndpointName', () => {
-                const result = client.matchLocationFromEndpointName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchNamespaceFromEndpointName', () => {
-                const result = client.matchNamespaceFromEndpointName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchServiceFromEndpointName', () => {
-                const result = client.matchServiceFromEndpointName(fakePath);
-                assert.strictEqual(result, "serviceValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchEndpointFromEndpointName', () => {
-                const result = client.matchEndpointFromEndpointName(fakePath);
-                assert.strictEqual(result, "endpointValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
-
-        describe('location', async () => {
-            const fakePath = "/rendered/path/location";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-            };
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.locationPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.locationPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('locationPath', () => {
-                const result = client.locationPath("projectValue", "locationValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.locationPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromLocationName', () => {
-                const result = client.matchProjectFromLocationName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.locationPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromLocationName', () => {
-                const result = client.matchLocationFromLocationName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.locationPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
-
-        describe('namespace', async () => {
-            const fakePath = "/rendered/path/namespace";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-            };
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.namespacePathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.namespacePathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('namespacePath', () => {
-                const result = client.namespacePath("projectValue", "locationValue", "namespaceValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.namespacePathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromNamespaceName', () => {
-                const result = client.matchProjectFromNamespaceName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromNamespaceName', () => {
-                const result = client.matchLocationFromNamespaceName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchNamespaceFromNamespaceName', () => {
-                const result = client.matchNamespaceFromNamespaceName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
-
-        describe('service', async () => {
-            const fakePath = "/rendered/path/service";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-                service: "serviceValue",
-            };
-            const client = new registrationserviceModule.v1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.servicePathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.servicePathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('servicePath', () => {
-                const result = client.servicePath("projectValue", "locationValue", "namespaceValue", "serviceValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.servicePathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromServiceName', () => {
-                const result = client.matchProjectFromServiceName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromServiceName', () => {
-                const result = client.matchLocationFromServiceName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    describe('location', async () => {
+      const fakePath = '/rendered/path/location';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+      };
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      client.pathTemplates.locationPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.locationPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('locationPath', () => {
+        const result = client.locationPath('projectValue', 'locationValue');
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.locationPathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromLocationName', () => {
+        const result = client.matchProjectFromLocationName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.locationPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromLocationName', () => {
+        const result = client.matchLocationFromLocationName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.locationPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+    });
 
-            it('matchNamespaceFromServiceName', () => {
-                const result = client.matchNamespaceFromServiceName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    describe('namespace', async () => {
+      const fakePath = '/rendered/path/namespace';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+      };
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      client.pathTemplates.namespacePathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.namespacePathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('namespacePath', () => {
+        const result = client.namespacePath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.namespacePathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromNamespaceName', () => {
+        const result = client.matchProjectFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromNamespaceName', () => {
+        const result = client.matchLocationFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromNamespaceName', () => {
+        const result = client.matchNamespaceFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+    });
 
-            it('matchServiceFromServiceName', () => {
-                const result = client.matchServiceFromServiceName(fakePath);
-                assert.strictEqual(result, "serviceValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    describe('service', async () => {
+      const fakePath = '/rendered/path/service';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+        service: 'serviceValue',
+      };
+      const client = new registrationserviceModule.v1.RegistrationServiceClient(
+        {
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        },
+      );
+      await client.initialize();
+      client.pathTemplates.servicePathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.servicePathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('servicePath', () => {
+        const result = client.servicePath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+          'serviceValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.servicePathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromServiceName', () => {
+        const result = client.matchProjectFromServiceName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromServiceName', () => {
+        const result = client.matchLocationFromServiceName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromServiceName', () => {
+        const result = client.matchNamespaceFromServiceName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchServiceFromServiceName', () => {
+        const result = client.matchServiceFromServiceName(fakePath);
+        assert.strictEqual(result, 'serviceValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
+  });
 });
diff --git a/packages/google-cloud-servicedirectory/test/gapic_registration_service_v1beta1.ts b/packages/google-cloud-servicedirectory/test/gapic_registration_service_v1beta1.ts
index 247dcea50925..71b30d77fa3f 100644
--- a/packages/google-cloud-servicedirectory/test/gapic_registration_service_v1beta1.ts
+++ b/packages/google-cloud-servicedirectory/test/gapic_registration_service_v1beta1.ts
@@ -19,2979 +19,3879 @@
 import * as protos from '../protos/protos';
 import * as assert from 'assert';
 import * as sinon from 'sinon';
-import {SinonStub} from 'sinon';
-import {describe, it} from 'mocha';
+import { SinonStub } from 'sinon';
+import { describe, it } from 'mocha';
 import * as registrationserviceModule from '../src';
 
-import {PassThrough} from 'stream';
+import { PassThrough } from 'stream';
 
-import {protobuf, LocationProtos} from 'google-gax';
+import { protobuf, LocationProtos } from 'google-gax';
 
 // Dynamically loaded proto JSON is needed to get the type information
 // to fill in default values for request objects
-const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll();
+const root = protobuf.Root.fromJSON(
+  require('../protos/protos.json'),
+).resolveAll();
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
 function getTypeDefaultValue(typeName: string, fields: string[]) {
-    let type = root.lookupType(typeName) as protobuf.Type;
-    for (const field of fields.slice(0, -1)) {
-        type = type.fields[field]?.resolvedType as protobuf.Type;
-    }
-    return type.fields[fields[fields.length - 1]]?.defaultValue;
+  let type = root.lookupType(typeName) as protobuf.Type;
+  for (const field of fields.slice(0, -1)) {
+    type = type.fields[field]?.resolvedType as protobuf.Type;
+  }
+  return type.fields[fields[fields.length - 1]]?.defaultValue;
 }
 
 function generateSampleMessage<T extends object>(instance: T) {
-    const filledObject = (instance.constructor as typeof protobuf.Message)
-        .toObject(instance as protobuf.Message<T>, {defaults: true});
-    return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T;
+  const filledObject = (
+    instance.constructor as typeof protobuf.Message
+  ).toObject(instance as protobuf.Message<T>, { defaults: true });
+  return (instance.constructor as typeof protobuf.Message).fromObject(
+    filledObject,
+  ) as T;
 }
 
 function stubSimpleCall<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]);
+  return error
+    ? sinon.stub().rejects(error)
+    : sinon.stub().resolves([response]);
 }
 
-function stubSimpleCallWithCallback<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response);
+function stubSimpleCallWithCallback<ResponseType>(
+  response?: ResponseType,
+  error?: Error,
+) {
+  return error
+    ? sinon.stub().callsArgWith(2, error)
+    : sinon.stub().callsArgWith(2, null, response);
 }
 
-function stubPageStreamingCall<ResponseType>(responses?: ResponseType[], error?: Error) {
-    const pagingStub = sinon.stub();
-    if (responses) {
-        for (let i = 0; i < responses.length; ++i) {
-            pagingStub.onCall(i).callsArgWith(2, null, responses[i]);
-        }
+function stubPageStreamingCall<ResponseType>(
+  responses?: ResponseType[],
+  error?: Error,
+) {
+  const pagingStub = sinon.stub();
+  if (responses) {
+    for (let i = 0; i < responses.length; ++i) {
+      pagingStub.onCall(i).callsArgWith(2, null, responses[i]);
     }
-    const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub;
-    const mockStream = new PassThrough({
-        objectMode: true,
-        transform: transformStub,
-    });
-    // trigger as many responses as needed
-    if (responses) {
-        for (let i = 0; i < responses.length; ++i) {
-            setImmediate(() => { mockStream.write({}); });
-        }
-        setImmediate(() => { mockStream.end(); });
-    } else {
-        setImmediate(() => { mockStream.write({}); });
-        setImmediate(() => { mockStream.end(); });
+  }
+  const transformStub = error
+    ? sinon.stub().callsArgWith(2, error)
+    : pagingStub;
+  const mockStream = new PassThrough({
+    objectMode: true,
+    transform: transformStub,
+  });
+  // trigger as many responses as needed
+  if (responses) {
+    for (let i = 0; i < responses.length; ++i) {
+      setImmediate(() => {
+        mockStream.write({});
+      });
     }
-    return sinon.stub().returns(mockStream);
+    setImmediate(() => {
+      mockStream.end();
+    });
+  } else {
+    setImmediate(() => {
+      mockStream.write({});
+    });
+    setImmediate(() => {
+      mockStream.end();
+    });
+  }
+  return sinon.stub().returns(mockStream);
 }
 
-function stubAsyncIterationCall<ResponseType>(responses?: ResponseType[], error?: Error) {
-    let counter = 0;
-    const asyncIterable = {
-        [Symbol.asyncIterator]() {
-            return {
-                async next() {
-                    if (error) {
-                        return Promise.reject(error);
-                    }
-                    if (counter >= responses!.length) {
-                        return Promise.resolve({done: true, value: undefined});
-                    }
-                    return Promise.resolve({done: false, value: responses![counter++]});
-                }
-            };
-        }
-    };
-    return sinon.stub().returns(asyncIterable);
+function stubAsyncIterationCall<ResponseType>(
+  responses?: ResponseType[],
+  error?: Error,
+) {
+  let counter = 0;
+  const asyncIterable = {
+    [Symbol.asyncIterator]() {
+      return {
+        async next() {
+          if (error) {
+            return Promise.reject(error);
+          }
+          if (counter >= responses!.length) {
+            return Promise.resolve({ done: true, value: undefined });
+          }
+          return Promise.resolve({ done: false, value: responses![counter++] });
+        },
+      };
+    },
+  };
+  return sinon.stub().returns(asyncIterable);
 }
 
 describe('v1beta1.RegistrationServiceClient', () => {
-    describe('Common methods', () => {
-        it('has apiEndpoint', () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient();
-            const apiEndpoint = client.apiEndpoint;
-            assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
-        });
-
-        it('has universeDomain', () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient();
-            const universeDomain = client.universeDomain;
-            assert.strictEqual(universeDomain, "googleapis.com");
-        });
-
-        if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-            it('throws DeprecationWarning if static servicePath is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const servicePath = registrationserviceModule.v1beta1.RegistrationServiceClient.servicePath;
-                assert.strictEqual(servicePath, 'servicedirectory.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
+  describe('Common methods', () => {
+    it('has apiEndpoint', () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient();
+      const apiEndpoint = client.apiEndpoint;
+      assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
+    });
 
-            it('throws DeprecationWarning if static apiEndpoint is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const apiEndpoint = registrationserviceModule.v1beta1.RegistrationServiceClient.apiEndpoint;
-                assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-        }
-        it('sets apiEndpoint according to universe domain camelCase', () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({universeDomain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicedirectory.example.com');
-        });
-
-        it('sets apiEndpoint according to universe domain snakeCase', () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({universe_domain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicedirectory.example.com');
-        });
-
-        if (typeof process === 'object' && 'env' in process) {
-            describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
-                it('sets apiEndpoint from environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new registrationserviceModule.v1beta1.RegistrationServiceClient();
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicedirectory.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-
-                it('value configured in code has priority over environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({universeDomain: 'configured.example.com'});
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicedirectory.configured.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-            });
-        }
-        it('does not allow setting both universeDomain and universe_domain', () => {
-            assert.throws(() => { new registrationserviceModule.v1beta1.RegistrationServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); });
-        });
+    it('has universeDomain', () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient();
+      const universeDomain = client.universeDomain;
+      assert.strictEqual(universeDomain, 'googleapis.com');
+    });
 
-        it('has port', () => {
-            const port = registrationserviceModule.v1beta1.RegistrationServiceClient.port;
-            assert(port);
-            assert(typeof port === 'number');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      it('throws DeprecationWarning if static servicePath is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const servicePath =
+          registrationserviceModule.v1beta1.RegistrationServiceClient
+            .servicePath;
+        assert.strictEqual(servicePath, 'servicedirectory.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+
+      it('throws DeprecationWarning if static apiEndpoint is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const apiEndpoint =
+          registrationserviceModule.v1beta1.RegistrationServiceClient
+            .apiEndpoint;
+        assert.strictEqual(apiEndpoint, 'servicedirectory.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+    }
+    it('sets apiEndpoint according to universe domain camelCase', () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          universeDomain: 'example.com',
         });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicedirectory.example.com');
+    });
 
-        it('should create a client with no option', () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient();
-            assert(client);
+    it('sets apiEndpoint according to universe domain snakeCase', () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          universe_domain: 'example.com',
         });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicedirectory.example.com');
+    });
 
-        it('should create a client with gRPC fallback', () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                fallback: true,
-            });
-            assert(client);
+    if (typeof process === 'object' && 'env' in process) {
+      describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
+        it('sets apiEndpoint from environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client =
+            new registrationserviceModule.v1beta1.RegistrationServiceClient();
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(servicePath, 'servicedirectory.example.com');
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
+        });
+
+        it('value configured in code has priority over environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client =
+            new registrationserviceModule.v1beta1.RegistrationServiceClient({
+              universeDomain: 'configured.example.com',
+            });
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(
+            servicePath,
+            'servicedirectory.configured.example.com',
+          );
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
+        });
+      });
+    }
+    it('does not allow setting both universeDomain and universe_domain', () => {
+      assert.throws(() => {
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          universe_domain: 'example.com',
+          universeDomain: 'example.net',
         });
+      });
+    });
 
-        it('has initialize method and supports deferred initialization', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.registrationServiceStub, undefined);
-            await client.initialize();
-            assert(client.registrationServiceStub);
-        });
+    it('has port', () => {
+      const port =
+        registrationserviceModule.v1beta1.RegistrationServiceClient.port;
+      assert(port);
+      assert(typeof port === 'number');
+    });
 
-        it('has close method for the initialized client', done => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.initialize().catch(err => {throw err});
-            assert(client.registrationServiceStub);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
+    it('should create a client with no option', () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient();
+      assert(client);
+    });
+
+    it('should create a client with gRPC fallback', () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          fallback: true,
         });
+      assert(client);
+    });
 
-        it('has close method for the non-initialized client', done => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.registrationServiceStub, undefined);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
+    it('has initialize method and supports deferred initialization', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
         });
+      assert.strictEqual(client.registrationServiceStub, undefined);
+      await client.initialize();
+      assert(client.registrationServiceStub);
+    });
 
-        it('has getProjectId method', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
-            const result = await client.getProjectId();
-            assert.strictEqual(result, fakeProjectId);
-            assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+    it('has close method for the initialized client', (done) => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      client.initialize().catch((err) => {
+        throw err;
+      });
+      assert(client.registrationServiceStub);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
+    });
 
-        it('has getProjectId method with callback', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId);
-            const promise = new Promise((resolve, reject) => {
-                client.getProjectId((err?: Error|null, projectId?: string|null) => {
-                    if (err) {
-                        reject(err);
-                    } else {
-                        resolve(projectId);
-                    }
-                });
-            });
-            const result = await promise;
-            assert.strictEqual(result, fakeProjectId);
+    it('has close method for the non-initialized client', (done) => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      assert.strictEqual(client.registrationServiceStub, undefined);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
     });
 
-    describe('createNamespace', () => {
-        it('invokes createNamespace without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Namespace()
-            );
-            client.innerApiCalls.createNamespace = stubSimpleCall(expectedResponse);
-            const [response] = await client.createNamespace(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createNamespace without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Namespace()
-            );
-            client.innerApiCalls.createNamespace = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.createNamespace(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.INamespace|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createNamespace with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.createNamespace = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.createNamespace(request), expectedError);
-            const actualRequest = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createNamespace with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.createNamespace(request), expectedError);
-        });
-    });
-
-    describe('getNamespace', () => {
-        it('invokes getNamespace without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Namespace()
-            );
-            client.innerApiCalls.getNamespace = stubSimpleCall(expectedResponse);
-            const [response] = await client.getNamespace(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getNamespace without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Namespace()
-            );
-            client.innerApiCalls.getNamespace = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getNamespace(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.INamespace|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getNamespace with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getNamespace = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getNamespace(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getNamespace with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getNamespace(request), expectedError);
-        });
-    });
-
-    describe('updateNamespace', () => {
-        it('invokes updateNamespace without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest()
-            );
-            request.namespace ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest', ['namespace', 'name']);
-            request.namespace.name = defaultValue1;
-            const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Namespace()
-            );
-            client.innerApiCalls.updateNamespace = stubSimpleCall(expectedResponse);
-            const [response] = await client.updateNamespace(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes updateNamespace without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest()
-            );
-            request.namespace ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest', ['namespace', 'name']);
-            request.namespace.name = defaultValue1;
-            const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Namespace()
-            );
-            client.innerApiCalls.updateNamespace = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.updateNamespace(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.INamespace|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes updateNamespace with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest()
-            );
-            request.namespace ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest', ['namespace', 'name']);
-            request.namespace.name = defaultValue1;
-            const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.updateNamespace = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.updateNamespace(request), expectedError);
-            const actualRequest = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes updateNamespace with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest()
-            );
-            request.namespace ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest', ['namespace', 'name']);
-            request.namespace.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.updateNamespace(request), expectedError);
-        });
-    });
-
-    describe('deleteNamespace', () => {
-        it('invokes deleteNamespace without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteNamespace = stubSimpleCall(expectedResponse);
-            const [response] = await client.deleteNamespace(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes deleteNamespace without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteNamespace = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.deleteNamespace(
-                    request,
-                    (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes deleteNamespace with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.deleteNamespace = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.deleteNamespace(request), expectedError);
-            const actualRequest = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteNamespace as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes deleteNamespace with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.deleteNamespace(request), expectedError);
-        });
-    });
-
-    describe('createService', () => {
-        it('invokes createService without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateServiceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Service()
-            );
-            client.innerApiCalls.createService = stubSimpleCall(expectedResponse);
-            const [response] = await client.createService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createService without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateServiceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Service()
-            );
-            client.innerApiCalls.createService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.createService(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.IService|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createService with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateServiceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.createService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.createService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createService with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateServiceRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.createService(request), expectedError);
-        });
-    });
-
-    describe('getService', () => {
-        it('invokes getService without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Service()
-            );
-            client.innerApiCalls.getService = stubSimpleCall(expectedResponse);
-            const [response] = await client.getService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getService without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Service()
-            );
-            client.innerApiCalls.getService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getService(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.IService|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getService with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getService with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getService(request), expectedError);
-        });
-    });
-
-    describe('updateService', () => {
-        it('invokes updateService without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest()
-            );
-            request.service ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest', ['service', 'name']);
-            request.service.name = defaultValue1;
-            const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Service()
-            );
-            client.innerApiCalls.updateService = stubSimpleCall(expectedResponse);
-            const [response] = await client.updateService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes updateService without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest()
-            );
-            request.service ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest', ['service', 'name']);
-            request.service.name = defaultValue1;
-            const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Service()
-            );
-            client.innerApiCalls.updateService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.updateService(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.IService|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes updateService with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest()
-            );
-            request.service ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest', ['service', 'name']);
-            request.service.name = defaultValue1;
-            const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.updateService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.updateService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes updateService with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest()
-            );
-            request.service ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest', ['service', 'name']);
-            request.service.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.updateService(request), expectedError);
-        });
-    });
-
-    describe('deleteService', () => {
-        it('invokes deleteService without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteService = stubSimpleCall(expectedResponse);
-            const [response] = await client.deleteService(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes deleteService without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteService = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.deleteService(
-                    request,
-                    (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes deleteService with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.deleteService = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.deleteService(request), expectedError);
-            const actualRequest = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteService as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes deleteService with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.deleteService(request), expectedError);
-        });
-    });
-
-    describe('createEndpoint', () => {
-        it('invokes createEndpoint without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Endpoint()
-            );
-            client.innerApiCalls.createEndpoint = stubSimpleCall(expectedResponse);
-            const [response] = await client.createEndpoint(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createEndpoint without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Endpoint()
-            );
-            client.innerApiCalls.createEndpoint = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.createEndpoint(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.IEndpoint|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createEndpoint with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.createEndpoint = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.createEndpoint(request), expectedError);
-            const actualRequest = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.createEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes createEndpoint with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.createEndpoint(request), expectedError);
-        });
-    });
-
-    describe('getEndpoint', () => {
-        it('invokes getEndpoint without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Endpoint()
-            );
-            client.innerApiCalls.getEndpoint = stubSimpleCall(expectedResponse);
-            const [response] = await client.getEndpoint(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getEndpoint without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Endpoint()
-            );
-            client.innerApiCalls.getEndpoint = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getEndpoint(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.IEndpoint|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getEndpoint with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getEndpoint = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getEndpoint(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getEndpoint with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.GetEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.GetEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getEndpoint(request), expectedError);
-        });
-    });
-
-    describe('updateEndpoint', () => {
-        it('invokes updateEndpoint without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest()
-            );
-            request.endpoint ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest', ['endpoint', 'name']);
-            request.endpoint.name = defaultValue1;
-            const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Endpoint()
-            );
-            client.innerApiCalls.updateEndpoint = stubSimpleCall(expectedResponse);
-            const [response] = await client.updateEndpoint(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes updateEndpoint without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest()
-            );
-            request.endpoint ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest', ['endpoint', 'name']);
-            request.endpoint.name = defaultValue1;
-            const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.Endpoint()
-            );
-            client.innerApiCalls.updateEndpoint = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.updateEndpoint(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.IEndpoint|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes updateEndpoint with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest()
-            );
-            request.endpoint ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest', ['endpoint', 'name']);
-            request.endpoint.name = defaultValue1;
-            const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.updateEndpoint = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.updateEndpoint(request), expectedError);
-            const actualRequest = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.updateEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes updateEndpoint with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest()
-            );
-            request.endpoint ??= {};
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest', ['endpoint', 'name']);
-            request.endpoint.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.updateEndpoint(request), expectedError);
-        });
-    });
-
-    describe('deleteEndpoint', () => {
-        it('invokes deleteEndpoint without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteEndpoint = stubSimpleCall(expectedResponse);
-            const [response] = await client.deleteEndpoint(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes deleteEndpoint without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.protobuf.Empty()
-            );
-            client.innerApiCalls.deleteEndpoint = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.deleteEndpoint(
-                    request,
-                    (err?: Error|null, result?: protos.google.protobuf.IEmpty|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes deleteEndpoint with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.deleteEndpoint = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.deleteEndpoint(request), expectedError);
-            const actualRequest = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.deleteEndpoint as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes deleteEndpoint with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.deleteEndpoint(request), expectedError);
-        });
-    });
-
-    describe('getIamPolicy', () => {
-        it('invokes getIamPolicy without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.GetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.GetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.Policy()
-            );
-            client.innerApiCalls.getIamPolicy = stubSimpleCall(expectedResponse);
-            const [response] = await client.getIamPolicy(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getIamPolicy without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.GetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.GetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.Policy()
-            );
-            client.innerApiCalls.getIamPolicy = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getIamPolicy(
-                    request,
-                    (err?: Error|null, result?: protos.google.iam.v1.IPolicy|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getIamPolicy with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.GetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.GetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getIamPolicy = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getIamPolicy(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes getIamPolicy with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.GetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.GetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getIamPolicy(request), expectedError);
-        });
-    });
-
-    describe('setIamPolicy', () => {
-        it('invokes setIamPolicy without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.SetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.SetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.Policy()
-            );
-            client.innerApiCalls.setIamPolicy = stubSimpleCall(expectedResponse);
-            const [response] = await client.setIamPolicy(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes setIamPolicy without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.SetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.SetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.Policy()
-            );
-            client.innerApiCalls.setIamPolicy = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.setIamPolicy(
-                    request,
-                    (err?: Error|null, result?: protos.google.iam.v1.IPolicy|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes setIamPolicy with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.SetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.SetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.setIamPolicy = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.setIamPolicy(request), expectedError);
-            const actualRequest = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.setIamPolicy as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes setIamPolicy with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.SetIamPolicyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.SetIamPolicyRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.setIamPolicy(request), expectedError);
-        });
-    });
-
-    describe('testIamPermissions', () => {
-        it('invokes testIamPermissions without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.TestIamPermissionsRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsResponse()
-            );
-            client.innerApiCalls.testIamPermissions = stubSimpleCall(expectedResponse);
-            const [response] = await client.testIamPermissions(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes testIamPermissions without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.TestIamPermissionsRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsResponse()
-            );
-            client.innerApiCalls.testIamPermissions = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.testIamPermissions(
-                    request,
-                    (err?: Error|null, result?: protos.google.iam.v1.ITestIamPermissionsResponse|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes testIamPermissions with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.TestIamPermissionsRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedHeaderRequestParams = `resource=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.testIamPermissions = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.testIamPermissions(request), expectedError);
-            const actualRequest = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.testIamPermissions as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes testIamPermissions with closed client', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.iam.v1.TestIamPermissionsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.iam.v1.TestIamPermissionsRequest', ['resource']);
-            request.resource = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.testIamPermissions(request), expectedError);
-        });
-    });
-
-    describe('listNamespaces', () => {
-        it('invokes listNamespaces without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-            ];
-            client.innerApiCalls.listNamespaces = stubSimpleCall(expectedResponse);
-            const [response] = await client.listNamespaces(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listNamespaces without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-            ];
-            client.innerApiCalls.listNamespaces = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.listNamespaces(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.INamespace[]|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listNamespaces with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.listNamespaces = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.listNamespaces(request), expectedError);
-            const actualRequest = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listNamespaces as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listNamespacesStream without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-            ];
-            client.descriptors.page.listNamespaces.createStream = stubPageStreamingCall(expectedResponse);
-            const stream = client.listNamespacesStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1beta1.Namespace[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1beta1.Namespace) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            const responses = await promise;
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert((client.descriptors.page.listNamespaces.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listNamespaces, request));
-            assert(
-                (client.descriptors.page.listNamespaces.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-
-        it('invokes listNamespacesStream with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listNamespaces.createStream = stubPageStreamingCall(undefined, expectedError);
-            const stream = client.listNamespacesStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1beta1.Namespace[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1beta1.Namespace) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            await assert.rejects(promise, expectedError);
-            assert((client.descriptors.page.listNamespaces.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listNamespaces, request));
-            assert(
-                (client.descriptors.page.listNamespaces.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                         expectedHeaderRequestParams
-                    ) 
-            );
-        });
-
-        it('uses async iteration with listNamespaces without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Namespace()),
-            ];
-            client.descriptors.page.listNamespaces.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: protos.google.cloud.servicedirectory.v1beta1.INamespace[] = [];
-            const iterable = client.listNamespacesAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+    it('has getProjectId method', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
+      const result = await client.getProjectId();
+      assert.strictEqual(result, fakeProjectId);
+      assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+    });
+
+    it('has getProjectId method with callback', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      client.auth.getProjectId = sinon
+        .stub()
+        .callsArgWith(0, null, fakeProjectId);
+      const promise = new Promise((resolve, reject) => {
+        client.getProjectId((err?: Error | null, projectId?: string | null) => {
+          if (err) {
+            reject(err);
+          } else {
+            resolve(projectId);
+          }
+        });
+      });
+      const result = await promise;
+      assert.strictEqual(result, fakeProjectId);
+    });
+  });
+
+  describe('createNamespace', () => {
+    it('invokes createNamespace without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+      );
+      client.innerApiCalls.createNamespace = stubSimpleCall(expectedResponse);
+      const [response] = await client.createNamespace(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes createNamespace without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+      );
+      client.innerApiCalls.createNamespace =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.createNamespace(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.INamespace | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-
-        it('uses async iteration with listNamespaces with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listNamespaces.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listNamespacesAsync(request);
-            await assert.rejects(async () => {
-                const responses: protos.google.cloud.servicedirectory.v1beta1.INamespace[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-    });
-
-    describe('listServices', () => {
-        it('invokes listServices without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-            ];
-            client.innerApiCalls.listServices = stubSimpleCall(expectedResponse);
-            const [response] = await client.listServices(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listServices without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-            ];
-            client.innerApiCalls.listServices = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.listServices(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.IService[]|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listServices with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.listServices = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.listServices(request), expectedError);
-            const actualRequest = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listServices as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listServicesStream without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-            ];
-            client.descriptors.page.listServices.createStream = stubPageStreamingCall(expectedResponse);
-            const stream = client.listServicesStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1beta1.Service[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1beta1.Service) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            const responses = await promise;
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert((client.descriptors.page.listServices.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listServices, request));
-            assert(
-                (client.descriptors.page.listServices.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-
-        it('invokes listServicesStream with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listServices.createStream = stubPageStreamingCall(undefined, expectedError);
-            const stream = client.listServicesStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1beta1.Service[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1beta1.Service) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            await assert.rejects(promise, expectedError);
-            assert((client.descriptors.page.listServices.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listServices, request));
-            assert(
-                (client.descriptors.page.listServices.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                         expectedHeaderRequestParams
-                    ) 
-            );
-        });
-
-        it('uses async iteration with listServices without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Service()),
-            ];
-            client.descriptors.page.listServices.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: protos.google.cloud.servicedirectory.v1beta1.IService[] = [];
-            const iterable = client.listServicesAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes createNamespace with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.createNamespace = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.createNamespace(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes createNamespace with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateNamespaceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.createNamespace(request), expectedError);
+    });
+  });
+
+  describe('getNamespace', () => {
+    it('invokes getNamespace without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+      );
+      client.innerApiCalls.getNamespace = stubSimpleCall(expectedResponse);
+      const [response] = await client.getNamespace(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes getNamespace without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+      );
+      client.innerApiCalls.getNamespace =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getNamespace(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.INamespace | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.descriptors.page.listServices.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listServices.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-
-        it('uses async iteration with listServices with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListServicesRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listServices.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listServicesAsync(request);
-            await assert.rejects(async () => {
-                const responses: protos.google.cloud.servicedirectory.v1beta1.IService[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.descriptors.page.listServices.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listServices.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-    });
-
-    describe('listEndpoints', () => {
-        it('invokes listEndpoints without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-            ];
-            client.innerApiCalls.listEndpoints = stubSimpleCall(expectedResponse);
-            const [response] = await client.listEndpoints(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listEndpoints without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-            ];
-            client.innerApiCalls.listEndpoints = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.listEndpoints(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicedirectory.v1beta1.IEndpoint[]|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listEndpoints with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.listEndpoints = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.listEndpoints(request), expectedError);
-            const actualRequest = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listEndpoints as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
-
-        it('invokes listEndpointsStream without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-            ];
-            client.descriptors.page.listEndpoints.createStream = stubPageStreamingCall(expectedResponse);
-            const stream = client.listEndpointsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1beta1.Endpoint[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1beta1.Endpoint) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            const responses = await promise;
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert((client.descriptors.page.listEndpoints.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listEndpoints, request));
-            assert(
-                (client.descriptors.page.listEndpoints.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-
-        it('invokes listEndpointsStream with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listEndpoints.createStream = stubPageStreamingCall(undefined, expectedError);
-            const stream = client.listEndpointsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicedirectory.v1beta1.Endpoint[] = [];
-                stream.on('data', (response: protos.google.cloud.servicedirectory.v1beta1.Endpoint) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            await assert.rejects(promise, expectedError);
-            assert((client.descriptors.page.listEndpoints.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listEndpoints, request));
-            assert(
-                (client.descriptors.page.listEndpoints.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                         expectedHeaderRequestParams
-                    ) 
-            );
-        });
-
-        it('uses async iteration with listEndpoints without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-              generateSampleMessage(new protos.google.cloud.servicedirectory.v1beta1.Endpoint()),
-            ];
-            client.descriptors.page.listEndpoints.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: protos.google.cloud.servicedirectory.v1beta1.IEndpoint[] = [];
-            const iterable = client.listEndpointsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes getNamespace with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getNamespace = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getNamespace(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes getNamespace with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getNamespace(request), expectedError);
+    });
+  });
+
+  describe('updateNamespace', () => {
+    it('invokes updateNamespace without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest(),
+      );
+      request.namespace ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest',
+        ['namespace', 'name'],
+      );
+      request.namespace.name = defaultValue1;
+      const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+      );
+      client.innerApiCalls.updateNamespace = stubSimpleCall(expectedResponse);
+      const [response] = await client.updateNamespace(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes updateNamespace without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest(),
+      );
+      request.namespace ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest',
+        ['namespace', 'name'],
+      );
+      request.namespace.name = defaultValue1;
+      const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+      );
+      client.innerApiCalls.updateNamespace =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.updateNamespace(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.INamespace | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-
-        it('uses async iteration with listEndpoints with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listEndpoints.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listEndpointsAsync(request);
-            await assert.rejects(async () => {
-                const responses: protos.google.cloud.servicedirectory.v1beta1.IEndpoint[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-    });
-    describe('getLocation', () => {
-        it('invokes getLocation without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
-            const response = await client.getLocation(request, expectedOptions);
-            assert.deepStrictEqual(response, [expectedResponse]);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
-        it('invokes getLocation without error using callback', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = sinon.stub().callsArgWith(2, null, expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getLocation(
-                    request,
-                    expectedOptions,
-                    (
-                        err?: Error | null,
-                        result?: LocationProtos.google.cloud.location.ILocation | null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0));
-        });
-        it('invokes getLocation with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedError = new Error('expected');
-            client.locationsClient.getLocation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getLocation(request, expectedOptions), expectedError);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
-    });
-    describe('listLocationsAsync', () => {
-        it('uses async iteration with listLocations without error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-                new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedResponse = [
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-            ];
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-            const iterable = client.listLocationsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes updateNamespace with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest(),
+      );
+      request.namespace ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest',
+        ['namespace', 'name'],
+      );
+      request.namespace.name = defaultValue1;
+      const expectedHeaderRequestParams = `namespace.name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.updateNamespace = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.updateNamespace(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes updateNamespace with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest(),
+      );
+      request.namespace ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateNamespaceRequest',
+        ['namespace', 'name'],
+      );
+      request.namespace.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.updateNamespace(request), expectedError);
+    });
+  });
+
+  describe('deleteNamespace', () => {
+    it('invokes deleteNamespace without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteNamespace = stubSimpleCall(expectedResponse);
+      const [response] = await client.deleteNamespace(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes deleteNamespace without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteNamespace =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.deleteNamespace(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.protobuf.IEmpty | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-        it('uses async iteration with listLocations with error', async () => {
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedError = new Error('expected');
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listLocationsAsync(request);
-            await assert.rejects(async () => {
-                const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-    });
-
-    describe('Path templates', () => {
-
-        describe('endpoint', async () => {
-            const fakePath = "/rendered/path/endpoint";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-                service: "serviceValue",
-                endpoint: "endpointValue",
-            };
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.endpointPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.endpointPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('endpointPath', () => {
-                const result = client.endpointPath("projectValue", "locationValue", "namespaceValue", "serviceValue", "endpointValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.endpointPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchProjectFromEndpointName', () => {
-                const result = client.matchProjectFromEndpointName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes deleteNamespace with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.deleteNamespace = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.deleteNamespace(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteNamespace as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchLocationFromEndpointName', () => {
-                const result = client.matchLocationFromEndpointName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes deleteNamespace with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteNamespaceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.deleteNamespace(request), expectedError);
+    });
+  });
+
+  describe('createService', () => {
+    it('invokes createService without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateServiceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Service(),
+      );
+      client.innerApiCalls.createService = stubSimpleCall(expectedResponse);
+      const [response] = await client.createService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchNamespaceFromEndpointName', () => {
-                const result = client.matchNamespaceFromEndpointName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes createService without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateServiceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Service(),
+      );
+      client.innerApiCalls.createService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.createService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.IService | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchServiceFromEndpointName', () => {
-                const result = client.matchServiceFromEndpointName(fakePath);
-                assert.strictEqual(result, "serviceValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes createService with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateServiceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.createService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.createService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchEndpointFromEndpointName', () => {
-                const result = client.matchEndpointFromEndpointName(fakePath);
-                assert.strictEqual(result, "endpointValue");
-                assert((client.pathTemplates.endpointPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    it('invokes createService with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateServiceRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.createService(request), expectedError);
+    });
+  });
+
+  describe('getService', () => {
+    it('invokes getService without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Service(),
+      );
+      client.innerApiCalls.getService = stubSimpleCall(expectedResponse);
+      const [response] = await client.getService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        describe('location', async () => {
-            const fakePath = "/rendered/path/location";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-            };
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.locationPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.locationPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('locationPath', () => {
-                const result = client.locationPath("projectValue", "locationValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.locationPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
+    it('invokes getService without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Service(),
+      );
+      client.innerApiCalls.getService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.IService | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchProjectFromLocationName', () => {
-                const result = client.matchProjectFromLocationName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.locationPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes getService with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchLocationFromLocationName', () => {
-                const result = client.matchLocationFromLocationName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.locationPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    it('invokes getService with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getService(request), expectedError);
+    });
+  });
+
+  describe('updateService', () => {
+    it('invokes updateService without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest(),
+      );
+      request.service ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest',
+        ['service', 'name'],
+      );
+      request.service.name = defaultValue1;
+      const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Service(),
+      );
+      client.innerApiCalls.updateService = stubSimpleCall(expectedResponse);
+      const [response] = await client.updateService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        describe('namespace', async () => {
-            const fakePath = "/rendered/path/namespace";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-            };
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.namespacePathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.namespacePathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('namespacePath', () => {
-                const result = client.namespacePath("projectValue", "locationValue", "namespaceValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.namespacePathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
+    it('invokes updateService without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest(),
+      );
+      request.service ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest',
+        ['service', 'name'],
+      );
+      request.service.name = defaultValue1;
+      const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Service(),
+      );
+      client.innerApiCalls.updateService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.updateService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.IService | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchProjectFromNamespaceName', () => {
-                const result = client.matchProjectFromNamespaceName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes updateService with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest(),
+      );
+      request.service ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest',
+        ['service', 'name'],
+      );
+      request.service.name = defaultValue1;
+      const expectedHeaderRequestParams = `service.name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.updateService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.updateService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchLocationFromNamespaceName', () => {
-                const result = client.matchLocationFromNamespaceName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes updateService with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest(),
+      );
+      request.service ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateServiceRequest',
+        ['service', 'name'],
+      );
+      request.service.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.updateService(request), expectedError);
+    });
+  });
+
+  describe('deleteService', () => {
+    it('invokes deleteService without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteService = stubSimpleCall(expectedResponse);
+      const [response] = await client.deleteService(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchNamespaceFromNamespaceName', () => {
-                const result = client.matchNamespaceFromNamespaceName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.namespacePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    it('invokes deleteService without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteService =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.deleteService(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.protobuf.IEmpty | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        describe('service', async () => {
-            const fakePath = "/rendered/path/service";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                namespace: "namespaceValue",
-                service: "serviceValue",
-            };
-            const client = new registrationserviceModule.v1beta1.RegistrationServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.servicePathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.servicePathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('servicePath', () => {
-                const result = client.servicePath("projectValue", "locationValue", "namespaceValue", "serviceValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.servicePathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
+    it('invokes deleteService with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.deleteService = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.deleteService(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteService as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchProjectFromServiceName', () => {
-                const result = client.matchProjectFromServiceName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes deleteService with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteServiceRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.deleteService(request), expectedError);
+    });
+  });
+
+  describe('createEndpoint', () => {
+    it('invokes createEndpoint without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+      );
+      client.innerApiCalls.createEndpoint = stubSimpleCall(expectedResponse);
+      const [response] = await client.createEndpoint(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchLocationFromServiceName', () => {
-                const result = client.matchLocationFromServiceName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes createEndpoint without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+      );
+      client.innerApiCalls.createEndpoint =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.createEndpoint(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.IEndpoint | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchNamespaceFromServiceName', () => {
-                const result = client.matchNamespaceFromServiceName(fakePath);
-                assert.strictEqual(result, "namespaceValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
+    it('invokes createEndpoint with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.createEndpoint = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.createEndpoint(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.createEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-            it('matchServiceFromServiceName', () => {
-                const result = client.matchServiceFromServiceName(fakePath);
-                assert.strictEqual(result, "serviceValue");
-                assert((client.pathTemplates.servicePathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    it('invokes createEndpoint with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.CreateEndpointRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.createEndpoint(request), expectedError);
+    });
+  });
+
+  describe('getEndpoint', () => {
+    it('invokes getEndpoint without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+      );
+      client.innerApiCalls.getEndpoint = stubSimpleCall(expectedResponse);
+      const [response] = await client.getEndpoint(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes getEndpoint without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+      );
+      client.innerApiCalls.getEndpoint =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getEndpoint(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.IEndpoint | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes getEndpoint with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getEndpoint = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getEndpoint(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes getEndpoint with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.GetEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.GetEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getEndpoint(request), expectedError);
+    });
+  });
+
+  describe('updateEndpoint', () => {
+    it('invokes updateEndpoint without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest(),
+      );
+      request.endpoint ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest',
+        ['endpoint', 'name'],
+      );
+      request.endpoint.name = defaultValue1;
+      const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+      );
+      client.innerApiCalls.updateEndpoint = stubSimpleCall(expectedResponse);
+      const [response] = await client.updateEndpoint(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes updateEndpoint without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest(),
+      );
+      request.endpoint ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest',
+        ['endpoint', 'name'],
+      );
+      request.endpoint.name = defaultValue1;
+      const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+      );
+      client.innerApiCalls.updateEndpoint =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.updateEndpoint(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicedirectory.v1beta1.IEndpoint | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes updateEndpoint with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest(),
+      );
+      request.endpoint ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest',
+        ['endpoint', 'name'],
+      );
+      request.endpoint.name = defaultValue1;
+      const expectedHeaderRequestParams = `endpoint.name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.updateEndpoint = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.updateEndpoint(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.updateEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes updateEndpoint with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest(),
+      );
+      request.endpoint ??= {};
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.UpdateEndpointRequest',
+        ['endpoint', 'name'],
+      );
+      request.endpoint.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.updateEndpoint(request), expectedError);
+    });
+  });
+
+  describe('deleteEndpoint', () => {
+    it('invokes deleteEndpoint without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteEndpoint = stubSimpleCall(expectedResponse);
+      const [response] = await client.deleteEndpoint(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes deleteEndpoint without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.innerApiCalls.deleteEndpoint =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.deleteEndpoint(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.protobuf.IEmpty | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes deleteEndpoint with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.deleteEndpoint = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.deleteEndpoint(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.deleteEndpoint as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes deleteEndpoint with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.DeleteEndpointRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.deleteEndpoint(request), expectedError);
+    });
+  });
+
+  describe('getIamPolicy', () => {
+    it('invokes getIamPolicy without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.GetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.GetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.Policy(),
+      );
+      client.innerApiCalls.getIamPolicy = stubSimpleCall(expectedResponse);
+      const [response] = await client.getIamPolicy(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes getIamPolicy without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.GetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.GetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.Policy(),
+      );
+      client.innerApiCalls.getIamPolicy =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getIamPolicy(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.iam.v1.IPolicy | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes getIamPolicy with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.GetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.GetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getIamPolicy = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getIamPolicy(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes getIamPolicy with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.GetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.GetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getIamPolicy(request), expectedError);
+    });
+  });
+
+  describe('setIamPolicy', () => {
+    it('invokes setIamPolicy without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.SetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.SetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.Policy(),
+      );
+      client.innerApiCalls.setIamPolicy = stubSimpleCall(expectedResponse);
+      const [response] = await client.setIamPolicy(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes setIamPolicy without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.SetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.SetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.Policy(),
+      );
+      client.innerApiCalls.setIamPolicy =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.setIamPolicy(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.iam.v1.IPolicy | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes setIamPolicy with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.SetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.SetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.setIamPolicy = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.setIamPolicy(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.setIamPolicy as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes setIamPolicy with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.SetIamPolicyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.SetIamPolicyRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.setIamPolicy(request), expectedError);
+    });
+  });
+
+  describe('testIamPermissions', () => {
+    it('invokes testIamPermissions without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.TestIamPermissionsRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsResponse(),
+      );
+      client.innerApiCalls.testIamPermissions =
+        stubSimpleCall(expectedResponse);
+      const [response] = await client.testIamPermissions(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes testIamPermissions without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.TestIamPermissionsRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsResponse(),
+      );
+      client.innerApiCalls.testIamPermissions =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.testIamPermissions(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.iam.v1.ITestIamPermissionsResponse | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes testIamPermissions with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.TestIamPermissionsRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedHeaderRequestParams = `resource=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.testIamPermissions = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.testIamPermissions(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.testIamPermissions as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes testIamPermissions with closed client', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.iam.v1.TestIamPermissionsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.iam.v1.TestIamPermissionsRequest',
+        ['resource'],
+      );
+      request.resource = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.testIamPermissions(request), expectedError);
+    });
+  });
+
+  describe('listNamespaces', () => {
+    it('invokes listNamespaces without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+      ];
+      client.innerApiCalls.listNamespaces = stubSimpleCall(expectedResponse);
+      const [response] = await client.listNamespaces(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes listNamespaces without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+      ];
+      client.innerApiCalls.listNamespaces =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.listNamespaces(
+          request,
+          (
+            err?: Error | null,
+            result?:
+              | protos.google.cloud.servicedirectory.v1beta1.INamespace[]
+              | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes listNamespaces with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.listNamespaces = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.listNamespaces(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listNamespaces as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes listNamespacesStream without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+      ];
+      client.descriptors.page.listNamespaces.createStream =
+        stubPageStreamingCall(expectedResponse);
+      const stream = client.listNamespacesStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1beta1.Namespace[] =
+          [];
+        stream.on(
+          'data',
+          (
+            response: protos.google.cloud.servicedirectory.v1beta1.Namespace,
+          ) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      const responses = await promise;
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert(
+        (client.descriptors.page.listNamespaces.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listNamespaces, request),
+      );
+      assert(
+        (client.descriptors.page.listNamespaces.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('invokes listNamespacesStream with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listNamespaces.createStream =
+        stubPageStreamingCall(undefined, expectedError);
+      const stream = client.listNamespacesStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1beta1.Namespace[] =
+          [];
+        stream.on(
+          'data',
+          (
+            response: protos.google.cloud.servicedirectory.v1beta1.Namespace,
+          ) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      await assert.rejects(promise, expectedError);
+      assert(
+        (client.descriptors.page.listNamespaces.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listNamespaces, request),
+      );
+      assert(
+        (client.descriptors.page.listNamespaces.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('uses async iteration with listNamespaces without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Namespace(),
+        ),
+      ];
+      client.descriptors.page.listNamespaces.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: protos.google.cloud.servicedirectory.v1beta1.INamespace[] =
+        [];
+      const iterable = client.listNamespacesAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listNamespaces.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('uses async iteration with listNamespaces with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListNamespacesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listNamespaces.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listNamespacesAsync(request);
+      await assert.rejects(async () => {
+        const responses: protos.google.cloud.servicedirectory.v1beta1.INamespace[] =
+          [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listNamespaces.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listNamespaces.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+  });
+
+  describe('listServices', () => {
+    it('invokes listServices without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+      ];
+      client.innerApiCalls.listServices = stubSimpleCall(expectedResponse);
+      const [response] = await client.listServices(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes listServices without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+      ];
+      client.innerApiCalls.listServices =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.listServices(
+          request,
+          (
+            err?: Error | null,
+            result?:
+              | protos.google.cloud.servicedirectory.v1beta1.IService[]
+              | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes listServices with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.listServices = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.listServices(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listServices as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes listServicesStream without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+      ];
+      client.descriptors.page.listServices.createStream =
+        stubPageStreamingCall(expectedResponse);
+      const stream = client.listServicesStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1beta1.Service[] =
+          [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1beta1.Service) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      const responses = await promise;
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert(
+        (client.descriptors.page.listServices.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listServices, request),
+      );
+      assert(
+        (client.descriptors.page.listServices.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('invokes listServicesStream with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listServices.createStream = stubPageStreamingCall(
+        undefined,
+        expectedError,
+      );
+      const stream = client.listServicesStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1beta1.Service[] =
+          [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1beta1.Service) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      await assert.rejects(promise, expectedError);
+      assert(
+        (client.descriptors.page.listServices.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listServices, request),
+      );
+      assert(
+        (client.descriptors.page.listServices.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('uses async iteration with listServices without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Service(),
+        ),
+      ];
+      client.descriptors.page.listServices.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: protos.google.cloud.servicedirectory.v1beta1.IService[] =
+        [];
+      const iterable = client.listServicesAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listServices.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listServices.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('uses async iteration with listServices with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListServicesRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListServicesRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listServices.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listServicesAsync(request);
+      await assert.rejects(async () => {
+        const responses: protos.google.cloud.servicedirectory.v1beta1.IService[] =
+          [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listServices.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listServices.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+  });
+
+  describe('listEndpoints', () => {
+    it('invokes listEndpoints without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+      ];
+      client.innerApiCalls.listEndpoints = stubSimpleCall(expectedResponse);
+      const [response] = await client.listEndpoints(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes listEndpoints without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+      ];
+      client.innerApiCalls.listEndpoints =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.listEndpoints(
+          request,
+          (
+            err?: Error | null,
+            result?:
+              | protos.google.cloud.servicedirectory.v1beta1.IEndpoint[]
+              | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes listEndpoints with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.listEndpoints = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.listEndpoints(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listEndpoints as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
+
+    it('invokes listEndpointsStream without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+      ];
+      client.descriptors.page.listEndpoints.createStream =
+        stubPageStreamingCall(expectedResponse);
+      const stream = client.listEndpointsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1beta1.Endpoint[] =
+          [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1beta1.Endpoint) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      const responses = await promise;
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert(
+        (client.descriptors.page.listEndpoints.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listEndpoints, request),
+      );
+      assert(
+        (client.descriptors.page.listEndpoints.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('invokes listEndpointsStream with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listEndpoints.createStream =
+        stubPageStreamingCall(undefined, expectedError);
+      const stream = client.listEndpointsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicedirectory.v1beta1.Endpoint[] =
+          [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicedirectory.v1beta1.Endpoint) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
+        });
+        stream.on('error', (err: Error) => {
+          reject(err);
+        });
+      });
+      await assert.rejects(promise, expectedError);
+      assert(
+        (client.descriptors.page.listEndpoints.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listEndpoints, request),
+      );
+      assert(
+        (client.descriptors.page.listEndpoints.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('uses async iteration with listEndpoints without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicedirectory.v1beta1.Endpoint(),
+        ),
+      ];
+      client.descriptors.page.listEndpoints.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: protos.google.cloud.servicedirectory.v1beta1.IEndpoint[] =
+        [];
+      const iterable = client.listEndpointsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listEndpoints.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('uses async iteration with listEndpoints with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicedirectory.v1beta1.ListEndpointsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listEndpoints.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listEndpointsAsync(request);
+      await assert.rejects(async () => {
+        const responses: protos.google.cloud.servicedirectory.v1beta1.IEndpoint[] =
+          [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listEndpoints.asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listEndpoints.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+  });
+  describe('getLocation', () => {
+    it('invokes getLocation without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
+      const response = await client.getLocation(request, expectedOptions);
+      assert.deepStrictEqual(response, [expectedResponse]);
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
+    });
+    it('invokes getLocation without error using callback', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = sinon
+        .stub()
+        .callsArgWith(2, null, expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getLocation(
+          request,
+          expectedOptions,
+          (
+            err?: Error | null,
+            result?: LocationProtos.google.cloud.location.ILocation | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      assert((client.locationsClient.getLocation as SinonStub).getCall(0));
+    });
+    it('invokes getLocation with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedError = new Error('expected');
+      client.locationsClient.getLocation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.getLocation(request, expectedOptions),
+        expectedError,
+      );
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
+    });
+  });
+  describe('listLocationsAsync', () => {
+    it('uses async iteration with listLocations without error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedResponse = [
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+      ];
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+      const iterable = client.listLocationsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+    it('uses async iteration with listLocations with error', async () => {
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedError = new Error('expected');
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listLocationsAsync(request);
+      await assert.rejects(async () => {
+        const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+  });
+
+  describe('Path templates', () => {
+    describe('endpoint', async () => {
+      const fakePath = '/rendered/path/endpoint';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+        service: 'serviceValue',
+        endpoint: 'endpointValue',
+      };
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      client.pathTemplates.endpointPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.endpointPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('endpointPath', () => {
+        const result = client.endpointPath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+          'serviceValue',
+          'endpointValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.endpointPathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromEndpointName', () => {
+        const result = client.matchProjectFromEndpointName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromEndpointName', () => {
+        const result = client.matchLocationFromEndpointName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromEndpointName', () => {
+        const result = client.matchNamespaceFromEndpointName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchServiceFromEndpointName', () => {
+        const result = client.matchServiceFromEndpointName(fakePath);
+        assert.strictEqual(result, 'serviceValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchEndpointFromEndpointName', () => {
+        const result = client.matchEndpointFromEndpointName(fakePath);
+        assert.strictEqual(result, 'endpointValue');
+        assert(
+          (client.pathTemplates.endpointPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+    });
+
+    describe('location', async () => {
+      const fakePath = '/rendered/path/location';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+      };
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      client.pathTemplates.locationPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.locationPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('locationPath', () => {
+        const result = client.locationPath('projectValue', 'locationValue');
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.locationPathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromLocationName', () => {
+        const result = client.matchProjectFromLocationName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.locationPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromLocationName', () => {
+        const result = client.matchLocationFromLocationName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.locationPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+    });
+
+    describe('namespace', async () => {
+      const fakePath = '/rendered/path/namespace';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+      };
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      client.pathTemplates.namespacePathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.namespacePathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('namespacePath', () => {
+        const result = client.namespacePath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.namespacePathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromNamespaceName', () => {
+        const result = client.matchProjectFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromNamespaceName', () => {
+        const result = client.matchLocationFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromNamespaceName', () => {
+        const result = client.matchNamespaceFromNamespaceName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.namespacePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+    });
+
+    describe('service', async () => {
+      const fakePath = '/rendered/path/service';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        namespace: 'namespaceValue',
+        service: 'serviceValue',
+      };
+      const client =
+        new registrationserviceModule.v1beta1.RegistrationServiceClient({
+          credentials: { client_email: 'bogus', private_key: 'bogus' },
+          projectId: 'bogus',
+        });
+      await client.initialize();
+      client.pathTemplates.servicePathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.servicePathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('servicePath', () => {
+        const result = client.servicePath(
+          'projectValue',
+          'locationValue',
+          'namespaceValue',
+          'serviceValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.servicePathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromServiceName', () => {
+        const result = client.matchProjectFromServiceName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromServiceName', () => {
+        const result = client.matchLocationFromServiceName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchNamespaceFromServiceName', () => {
+        const result = client.matchNamespaceFromServiceName(fakePath);
+        assert.strictEqual(result, 'namespaceValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchServiceFromServiceName', () => {
+        const result = client.matchServiceFromServiceName(fakePath);
+        assert.strictEqual(result, 'serviceValue');
+        assert(
+          (client.pathTemplates.servicePathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
+  });
 });
diff --git a/packages/google-cloud-servicedirectory/webpack.config.js b/packages/google-cloud-servicedirectory/webpack.config.js
index 19c329bb29c1..a2f5474bdc72 100644
--- a/packages/google-cloud-servicedirectory/webpack.config.js
+++ b/packages/google-cloud-servicedirectory/webpack.config.js
@@ -1,4 +1,4 @@
-// Copyright 2026 Google LLC
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/packages/google-cloud-servicehealth/README.md b/packages/google-cloud-servicehealth/README.md
index 10b87e71d9c1..ab465377bc51 100644
--- a/packages/google-cloud-servicehealth/README.md
+++ b/packages/google-cloud-servicehealth/README.md
@@ -64,7 +64,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
 | list events | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicehealth/samples/generated/v1/service_health.list_events.js) |
 | list organization events | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicehealth/samples/generated/v1/service_health.list_organization_events.js) |
 | list organization impacts | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicehealth/samples/generated/v1/service_health.list_organization_impacts.js) |
-| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicehealth/samples/generated/v1/snippet_metadata_google.cloud.servicehealth.v1.json) |
 
 
 ## Supported Node.js Versions
@@ -98,7 +97,7 @@ More Information: [Google Cloud Platform Launch Stages][launch_stages]
 
 ## Contributing
 
-Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicehealth/CONTRIBUTING.md).
+Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/CONTRIBUTING.md).
 
 Please note that this `README.md`
 and a variety of configuration files in this repository (including `.nycrc` and `tsconfig.json`)
@@ -108,7 +107,7 @@ are generated from a central template.
 
 Apache Version 2.0
 
-See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-servicehealth/LICENSE)
+See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/LICENSE)
 
 [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png
 [projects]: https://console.cloud.google.com/project
diff --git a/packages/google-cloud-servicehealth/protos/protos.d.ts b/packages/google-cloud-servicehealth/protos/protos.d.ts
index f4bf63ed0ec3..58796f67cb81 100644
--- a/packages/google-cloud-servicehealth/protos/protos.d.ts
+++ b/packages/google-cloud-servicehealth/protos/protos.d.ts
@@ -2880,6 +2880,9 @@ export namespace google {
 
             /** CommonLanguageSettings destinations */
             destinations?: (google.api.ClientLibraryDestination[]|null);
+
+            /** CommonLanguageSettings selectiveGapicGeneration */
+            selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);
         }
 
         /** Represents a CommonLanguageSettings. */
@@ -2897,6 +2900,9 @@ export namespace google {
             /** CommonLanguageSettings destinations. */
             public destinations: google.api.ClientLibraryDestination[];
 
+            /** CommonLanguageSettings selectiveGapicGeneration. */
+            public selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);
+
             /**
              * Creates a new CommonLanguageSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -3597,6 +3603,9 @@ export namespace google {
 
             /** PythonSettings common */
             common?: (google.api.ICommonLanguageSettings|null);
+
+            /** PythonSettings experimentalFeatures */
+            experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);
         }
 
         /** Represents a PythonSettings. */
@@ -3611,6 +3620,9 @@ export namespace google {
             /** PythonSettings common. */
             public common?: (google.api.ICommonLanguageSettings|null);
 
+            /** PythonSettings experimentalFeatures. */
+            public experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);
+
             /**
              * Creates a new PythonSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -3689,6 +3701,118 @@ export namespace google {
             public static getTypeUrl(typeUrlPrefix?: string): string;
         }
 
+        namespace PythonSettings {
+
+            /** Properties of an ExperimentalFeatures. */
+            interface IExperimentalFeatures {
+
+                /** ExperimentalFeatures restAsyncIoEnabled */
+                restAsyncIoEnabled?: (boolean|null);
+
+                /** ExperimentalFeatures protobufPythonicTypesEnabled */
+                protobufPythonicTypesEnabled?: (boolean|null);
+
+                /** ExperimentalFeatures unversionedPackageDisabled */
+                unversionedPackageDisabled?: (boolean|null);
+            }
+
+            /** Represents an ExperimentalFeatures. */
+            class ExperimentalFeatures implements IExperimentalFeatures {
+
+                /**
+                 * Constructs a new ExperimentalFeatures.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.api.PythonSettings.IExperimentalFeatures);
+
+                /** ExperimentalFeatures restAsyncIoEnabled. */
+                public restAsyncIoEnabled: boolean;
+
+                /** ExperimentalFeatures protobufPythonicTypesEnabled. */
+                public protobufPythonicTypesEnabled: boolean;
+
+                /** ExperimentalFeatures unversionedPackageDisabled. */
+                public unversionedPackageDisabled: boolean;
+
+                /**
+                 * Creates a new ExperimentalFeatures instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns ExperimentalFeatures instance
+                 */
+                public static create(properties?: google.api.PythonSettings.IExperimentalFeatures): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                 * @param message ExperimentalFeatures message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                 * @param message ExperimentalFeatures message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes an ExperimentalFeatures message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns ExperimentalFeatures
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns ExperimentalFeatures
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Verifies an ExperimentalFeatures message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns ExperimentalFeatures
+                 */
+                public static fromObject(object: { [k: string]: any }): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
+                 * @param message ExperimentalFeatures
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.api.PythonSettings.ExperimentalFeatures, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this ExperimentalFeatures to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for ExperimentalFeatures
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
         /** Properties of a NodeSettings. */
         interface INodeSettings {
 
@@ -4015,6 +4139,9 @@ export namespace google {
 
             /** GoSettings common */
             common?: (google.api.ICommonLanguageSettings|null);
+
+            /** GoSettings renamedServices */
+            renamedServices?: ({ [k: string]: string }|null);
         }
 
         /** Represents a GoSettings. */
@@ -4029,6 +4156,9 @@ export namespace google {
             /** GoSettings common. */
             public common?: (google.api.ICommonLanguageSettings|null);
 
+            /** GoSettings renamedServices. */
+            public renamedServices: { [k: string]: string };
+
             /**
              * Creates a new GoSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -4353,6 +4483,109 @@ export namespace google {
             PACKAGE_MANAGER = 20
         }
 
+        /** Properties of a SelectiveGapicGeneration. */
+        interface ISelectiveGapicGeneration {
+
+            /** SelectiveGapicGeneration methods */
+            methods?: (string[]|null);
+
+            /** SelectiveGapicGeneration generateOmittedAsInternal */
+            generateOmittedAsInternal?: (boolean|null);
+        }
+
+        /** Represents a SelectiveGapicGeneration. */
+        class SelectiveGapicGeneration implements ISelectiveGapicGeneration {
+
+            /**
+             * Constructs a new SelectiveGapicGeneration.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.ISelectiveGapicGeneration);
+
+            /** SelectiveGapicGeneration methods. */
+            public methods: string[];
+
+            /** SelectiveGapicGeneration generateOmittedAsInternal. */
+            public generateOmittedAsInternal: boolean;
+
+            /**
+             * Creates a new SelectiveGapicGeneration instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns SelectiveGapicGeneration instance
+             */
+            public static create(properties?: google.api.ISelectiveGapicGeneration): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+             * @param message SelectiveGapicGeneration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+             * @param message SelectiveGapicGeneration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns SelectiveGapicGeneration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns SelectiveGapicGeneration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Verifies a SelectiveGapicGeneration message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns SelectiveGapicGeneration
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
+             * @param message SelectiveGapicGeneration
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.SelectiveGapicGeneration, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this SelectiveGapicGeneration to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for SelectiveGapicGeneration
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
         /** LaunchStage enum. */
         enum LaunchStage {
             LAUNCH_STAGE_UNSPECIFIED = 0,
@@ -4469,6 +4702,7 @@ export namespace google {
         /** Edition enum. */
         enum Edition {
             EDITION_UNKNOWN = 0,
+            EDITION_LEGACY = 900,
             EDITION_PROTO2 = 998,
             EDITION_PROTO3 = 999,
             EDITION_2023 = 1000,
@@ -4499,6 +4733,9 @@ export namespace google {
             /** FileDescriptorProto weakDependency */
             weakDependency?: (number[]|null);
 
+            /** FileDescriptorProto optionDependency */
+            optionDependency?: (string[]|null);
+
             /** FileDescriptorProto messageType */
             messageType?: (google.protobuf.IDescriptorProto[]|null);
 
@@ -4548,6 +4785,9 @@ export namespace google {
             /** FileDescriptorProto weakDependency. */
             public weakDependency: number[];
 
+            /** FileDescriptorProto optionDependency. */
+            public optionDependency: string[];
+
             /** FileDescriptorProto messageType. */
             public messageType: google.protobuf.IDescriptorProto[];
 
@@ -4682,6 +4922,9 @@ export namespace google {
 
             /** DescriptorProto reservedName */
             reservedName?: (string[]|null);
+
+            /** DescriptorProto visibility */
+            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
         }
 
         /** Represents a DescriptorProto. */
@@ -4723,6 +4966,9 @@ export namespace google {
             /** DescriptorProto reservedName. */
             public reservedName: string[];
 
+            /** DescriptorProto visibility. */
+            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);
+
             /**
              * Creates a new DescriptorProto instance using the specified properties.
              * @param [properties] Properties to set
@@ -5570,6 +5816,9 @@ export namespace google {
 
             /** EnumDescriptorProto reservedName */
             reservedName?: (string[]|null);
+
+            /** EnumDescriptorProto visibility */
+            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
         }
 
         /** Represents an EnumDescriptorProto. */
@@ -5596,6 +5845,9 @@ export namespace google {
             /** EnumDescriptorProto reservedName. */
             public reservedName: string[];
 
+            /** EnumDescriptorProto visibility. */
+            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);
+
             /**
              * Creates a new EnumDescriptorProto instance using the specified properties.
              * @param [properties] Properties to set
@@ -6530,6 +6782,9 @@ export namespace google {
             /** FieldOptions features */
             features?: (google.protobuf.IFeatureSet|null);
 
+            /** FieldOptions featureSupport */
+            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** FieldOptions uninterpretedOption */
             uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
 
@@ -6585,6 +6840,9 @@ export namespace google {
             /** FieldOptions features. */
             public features?: (google.protobuf.IFeatureSet|null);
 
+            /** FieldOptions featureSupport. */
+            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** FieldOptions uninterpretedOption. */
             public uninterpretedOption: google.protobuf.IUninterpretedOption[];
 
@@ -6805,6 +7063,121 @@ export namespace google {
                  */
                 public static getTypeUrl(typeUrlPrefix?: string): string;
             }
+
+            /** Properties of a FeatureSupport. */
+            interface IFeatureSupport {
+
+                /** FeatureSupport editionIntroduced */
+                editionIntroduced?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** FeatureSupport editionDeprecated */
+                editionDeprecated?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** FeatureSupport deprecationWarning */
+                deprecationWarning?: (string|null);
+
+                /** FeatureSupport editionRemoved */
+                editionRemoved?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+            }
+
+            /** Represents a FeatureSupport. */
+            class FeatureSupport implements IFeatureSupport {
+
+                /**
+                 * Constructs a new FeatureSupport.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FieldOptions.IFeatureSupport);
+
+                /** FeatureSupport editionIntroduced. */
+                public editionIntroduced: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** FeatureSupport editionDeprecated. */
+                public editionDeprecated: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** FeatureSupport deprecationWarning. */
+                public deprecationWarning: string;
+
+                /** FeatureSupport editionRemoved. */
+                public editionRemoved: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /**
+                 * Creates a new FeatureSupport instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns FeatureSupport instance
+                 */
+                public static create(properties?: google.protobuf.FieldOptions.IFeatureSupport): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                 * @param message FeatureSupport message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                 * @param message FeatureSupport message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a FeatureSupport message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns FeatureSupport
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns FeatureSupport
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Verifies a FeatureSupport message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns FeatureSupport
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified.
+                 * @param message FeatureSupport
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FieldOptions.FeatureSupport, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this FeatureSupport to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for FeatureSupport
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
         }
 
         /** Properties of an OneofOptions. */
@@ -7043,6 +7416,9 @@ export namespace google {
             /** EnumValueOptions debugRedact */
             debugRedact?: (boolean|null);
 
+            /** EnumValueOptions featureSupport */
+            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** EnumValueOptions uninterpretedOption */
             uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
         }
@@ -7065,6 +7441,9 @@ export namespace google {
             /** EnumValueOptions debugRedact. */
             public debugRedact: boolean;
 
+            /** EnumValueOptions featureSupport. */
+            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** EnumValueOptions uninterpretedOption. */
             public uninterpretedOption: google.protobuf.IUninterpretedOption[];
 
@@ -7654,6 +8033,12 @@ export namespace google {
 
             /** FeatureSet jsonFormat */
             jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null);
+
+            /** FeatureSet enforceNamingStyle */
+            enforceNamingStyle?: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle|null);
+
+            /** FeatureSet defaultSymbolVisibility */
+            defaultSymbolVisibility?: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null);
         }
 
         /** Represents a FeatureSet. */
@@ -7683,6 +8068,12 @@ export namespace google {
             /** FeatureSet jsonFormat. */
             public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat);
 
+            /** FeatureSet enforceNamingStyle. */
+            public enforceNamingStyle: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle);
+
+            /** FeatureSet defaultSymbolVisibility. */
+            public defaultSymbolVisibility: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility);
+
             /**
              * Creates a new FeatureSet instance using the specified properties.
              * @param [properties] Properties to set
@@ -7805,6 +8196,116 @@ export namespace google {
                 ALLOW = 1,
                 LEGACY_BEST_EFFORT = 2
             }
+
+            /** EnforceNamingStyle enum. */
+            enum EnforceNamingStyle {
+                ENFORCE_NAMING_STYLE_UNKNOWN = 0,
+                STYLE2024 = 1,
+                STYLE_LEGACY = 2
+            }
+
+            /** Properties of a VisibilityFeature. */
+            interface IVisibilityFeature {
+            }
+
+            /** Represents a VisibilityFeature. */
+            class VisibilityFeature implements IVisibilityFeature {
+
+                /**
+                 * Constructs a new VisibilityFeature.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FeatureSet.IVisibilityFeature);
+
+                /**
+                 * Creates a new VisibilityFeature instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns VisibilityFeature instance
+                 */
+                public static create(properties?: google.protobuf.FeatureSet.IVisibilityFeature): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                 * @param message VisibilityFeature message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                 * @param message VisibilityFeature message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a VisibilityFeature message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns VisibilityFeature
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns VisibilityFeature
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Verifies a VisibilityFeature message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns VisibilityFeature
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified.
+                 * @param message VisibilityFeature
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FeatureSet.VisibilityFeature, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this VisibilityFeature to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for VisibilityFeature
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+
+            namespace VisibilityFeature {
+
+                /** DefaultSymbolVisibility enum. */
+                enum DefaultSymbolVisibility {
+                    DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0,
+                    EXPORT_ALL = 1,
+                    EXPORT_TOP_LEVEL = 2,
+                    LOCAL_ALL = 3,
+                    STRICT = 4
+                }
+            }
         }
 
         /** Properties of a FeatureSetDefaults. */
@@ -7924,8 +8425,11 @@ export namespace google {
                 /** FeatureSetEditionDefault edition */
                 edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
 
-                /** FeatureSetEditionDefault features */
-                features?: (google.protobuf.IFeatureSet|null);
+                /** FeatureSetEditionDefault overridableFeatures */
+                overridableFeatures?: (google.protobuf.IFeatureSet|null);
+
+                /** FeatureSetEditionDefault fixedFeatures */
+                fixedFeatures?: (google.protobuf.IFeatureSet|null);
             }
 
             /** Represents a FeatureSetEditionDefault. */
@@ -7940,8 +8444,11 @@ export namespace google {
                 /** FeatureSetEditionDefault edition. */
                 public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
 
-                /** FeatureSetEditionDefault features. */
-                public features?: (google.protobuf.IFeatureSet|null);
+                /** FeatureSetEditionDefault overridableFeatures. */
+                public overridableFeatures?: (google.protobuf.IFeatureSet|null);
+
+                /** FeatureSetEditionDefault fixedFeatures. */
+                public fixedFeatures?: (google.protobuf.IFeatureSet|null);
 
                 /**
                  * Creates a new FeatureSetEditionDefault instance using the specified properties.
@@ -8474,6 +8981,13 @@ export namespace google {
             }
         }
 
+        /** SymbolVisibility enum. */
+        enum SymbolVisibility {
+            VISIBILITY_UNSET = 0,
+            VISIBILITY_LOCAL = 1,
+            VISIBILITY_EXPORT = 2
+        }
+
         /** Properties of a Timestamp. */
         interface ITimestamp {
 
diff --git a/packages/google-cloud-servicehealth/protos/protos.js b/packages/google-cloud-servicehealth/protos/protos.js
index 7c6802576dc5..e92ccfc4105e 100644
--- a/packages/google-cloud-servicehealth/protos/protos.js
+++ b/packages/google-cloud-servicehealth/protos/protos.js
@@ -102,7 +102,7 @@
                             this.updates = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -309,9 +309,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Event.decode = function decode(reader, length, error) {
+                        Event.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.Event();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -349,7 +353,7 @@
                                 case 20: {
                                         if (!(message.eventImpacts && message.eventImpacts.length))
                                             message.eventImpacts = [];
-                                        message.eventImpacts.push($root.google.cloud.servicehealth.v1.EventImpact.decode(reader, reader.uint32()));
+                                        message.eventImpacts.push($root.google.cloud.servicehealth.v1.EventImpact.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 8: {
@@ -359,7 +363,7 @@
                                 case 9: {
                                         if (!(message.updates && message.updates.length))
                                             message.updates = [];
-                                        message.updates.push($root.google.cloud.servicehealth.v1.EventUpdate.decode(reader, reader.uint32()));
+                                        message.updates.push($root.google.cloud.servicehealth.v1.EventUpdate.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 10: {
@@ -367,23 +371,23 @@
                                         break;
                                     }
                                 case 12: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 13: {
-                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 14: {
-                                        message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 15: {
-                                        message.nextUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.nextUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -414,9 +418,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Event.verify = function verify(message) {
+                        Event.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -469,7 +477,7 @@
                                 if (!Array.isArray(message.eventImpacts))
                                     return "eventImpacts: array expected";
                                 for (var i = 0; i < message.eventImpacts.length; ++i) {
-                                    var error = $root.google.cloud.servicehealth.v1.EventImpact.verify(message.eventImpacts[i]);
+                                    var error = $root.google.cloud.servicehealth.v1.EventImpact.verify(message.eventImpacts[i], long + 1);
                                     if (error)
                                         return "eventImpacts." + error;
                                 }
@@ -490,7 +498,7 @@
                                 if (!Array.isArray(message.updates))
                                     return "updates: array expected";
                                 for (var i = 0; i < message.updates.length; ++i) {
-                                    var error = $root.google.cloud.servicehealth.v1.EventUpdate.verify(message.updates[i]);
+                                    var error = $root.google.cloud.servicehealth.v1.EventUpdate.verify(message.updates[i], long + 1);
                                     if (error)
                                         return "updates." + error;
                                 }
@@ -499,22 +507,22 @@
                                 if (!$util.isString(message.parentEvent))
                                     return "parentEvent: string expected";
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
                             if (message.startTime != null && message.hasOwnProperty("startTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1);
                                 if (error)
                                     return "startTime." + error;
                             }
                             if (message.endTime != null && message.hasOwnProperty("endTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.endTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.endTime, long + 1);
                                 if (error)
                                     return "endTime." + error;
                             }
                             if (message.nextUpdateTime != null && message.hasOwnProperty("nextUpdateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.nextUpdateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.nextUpdateTime, long + 1);
                                 if (error)
                                     return "nextUpdateTime." + error;
                             }
@@ -529,9 +537,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.Event} Event
                          */
-                        Event.fromObject = function fromObject(object) {
+                        Event.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.Event)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.Event();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -638,7 +650,7 @@
                                 for (var i = 0; i < object.eventImpacts.length; ++i) {
                                     if (typeof object.eventImpacts[i] !== "object")
                                         throw TypeError(".google.cloud.servicehealth.v1.Event.eventImpacts: object expected");
-                                    message.eventImpacts[i] = $root.google.cloud.servicehealth.v1.EventImpact.fromObject(object.eventImpacts[i]);
+                                    message.eventImpacts[i] = $root.google.cloud.servicehealth.v1.EventImpact.fromObject(object.eventImpacts[i], long + 1);
                                 }
                             }
                             switch (object.relevance) {
@@ -680,7 +692,7 @@
                                 for (var i = 0; i < object.updates.length; ++i) {
                                     if (typeof object.updates[i] !== "object")
                                         throw TypeError(".google.cloud.servicehealth.v1.Event.updates: object expected");
-                                    message.updates[i] = $root.google.cloud.servicehealth.v1.EventUpdate.fromObject(object.updates[i]);
+                                    message.updates[i] = $root.google.cloud.servicehealth.v1.EventUpdate.fromObject(object.updates[i], long + 1);
                                 }
                             }
                             if (object.parentEvent != null)
@@ -688,22 +700,22 @@
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.Event.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.startTime != null) {
                                 if (typeof object.startTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.Event.startTime: object expected");
-                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1);
                             }
                             if (object.endTime != null) {
                                 if (typeof object.endTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.Event.endTime: object expected");
-                                message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime);
+                                message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime, long + 1);
                             }
                             if (object.nextUpdateTime != null) {
                                 if (typeof object.nextUpdateTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.Event.nextUpdateTime: object expected");
-                                message.nextUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.nextUpdateTime);
+                                message.nextUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.nextUpdateTime, long + 1);
                             }
                             return message;
                         };
@@ -935,7 +947,7 @@
                             this.updates = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1132,9 +1144,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        OrganizationEvent.decode = function decode(reader, length, error) {
+                        OrganizationEvent.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.OrganizationEvent();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1172,13 +1188,13 @@
                                 case 15: {
                                         if (!(message.eventImpacts && message.eventImpacts.length))
                                             message.eventImpacts = [];
-                                        message.eventImpacts.push($root.google.cloud.servicehealth.v1.EventImpact.decode(reader, reader.uint32()));
+                                        message.eventImpacts.push($root.google.cloud.servicehealth.v1.EventImpact.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 8: {
                                         if (!(message.updates && message.updates.length))
                                             message.updates = [];
-                                        message.updates.push($root.google.cloud.servicehealth.v1.EventUpdate.decode(reader, reader.uint32()));
+                                        message.updates.push($root.google.cloud.servicehealth.v1.EventUpdate.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 9: {
@@ -1186,23 +1202,23 @@
                                         break;
                                     }
                                 case 11: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 12: {
-                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 13: {
-                                        message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 14: {
-                                        message.nextUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.nextUpdateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1233,9 +1249,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        OrganizationEvent.verify = function verify(message) {
+                        OrganizationEvent.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -1288,7 +1308,7 @@
                                 if (!Array.isArray(message.eventImpacts))
                                     return "eventImpacts: array expected";
                                 for (var i = 0; i < message.eventImpacts.length; ++i) {
-                                    var error = $root.google.cloud.servicehealth.v1.EventImpact.verify(message.eventImpacts[i]);
+                                    var error = $root.google.cloud.servicehealth.v1.EventImpact.verify(message.eventImpacts[i], long + 1);
                                     if (error)
                                         return "eventImpacts." + error;
                                 }
@@ -1297,7 +1317,7 @@
                                 if (!Array.isArray(message.updates))
                                     return "updates: array expected";
                                 for (var i = 0; i < message.updates.length; ++i) {
-                                    var error = $root.google.cloud.servicehealth.v1.EventUpdate.verify(message.updates[i]);
+                                    var error = $root.google.cloud.servicehealth.v1.EventUpdate.verify(message.updates[i], long + 1);
                                     if (error)
                                         return "updates." + error;
                                 }
@@ -1306,22 +1326,22 @@
                                 if (!$util.isString(message.parentEvent))
                                     return "parentEvent: string expected";
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
                             if (message.startTime != null && message.hasOwnProperty("startTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.startTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.startTime, long + 1);
                                 if (error)
                                     return "startTime." + error;
                             }
                             if (message.endTime != null && message.hasOwnProperty("endTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.endTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.endTime, long + 1);
                                 if (error)
                                     return "endTime." + error;
                             }
                             if (message.nextUpdateTime != null && message.hasOwnProperty("nextUpdateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.nextUpdateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.nextUpdateTime, long + 1);
                                 if (error)
                                     return "nextUpdateTime." + error;
                             }
@@ -1336,9 +1356,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.OrganizationEvent} OrganizationEvent
                          */
-                        OrganizationEvent.fromObject = function fromObject(object) {
+                        OrganizationEvent.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.OrganizationEvent)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.OrganizationEvent();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -1445,7 +1469,7 @@
                                 for (var i = 0; i < object.eventImpacts.length; ++i) {
                                     if (typeof object.eventImpacts[i] !== "object")
                                         throw TypeError(".google.cloud.servicehealth.v1.OrganizationEvent.eventImpacts: object expected");
-                                    message.eventImpacts[i] = $root.google.cloud.servicehealth.v1.EventImpact.fromObject(object.eventImpacts[i]);
+                                    message.eventImpacts[i] = $root.google.cloud.servicehealth.v1.EventImpact.fromObject(object.eventImpacts[i], long + 1);
                                 }
                             }
                             if (object.updates) {
@@ -1455,7 +1479,7 @@
                                 for (var i = 0; i < object.updates.length; ++i) {
                                     if (typeof object.updates[i] !== "object")
                                         throw TypeError(".google.cloud.servicehealth.v1.OrganizationEvent.updates: object expected");
-                                    message.updates[i] = $root.google.cloud.servicehealth.v1.EventUpdate.fromObject(object.updates[i]);
+                                    message.updates[i] = $root.google.cloud.servicehealth.v1.EventUpdate.fromObject(object.updates[i], long + 1);
                                 }
                             }
                             if (object.parentEvent != null)
@@ -1463,22 +1487,22 @@
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.OrganizationEvent.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.startTime != null) {
                                 if (typeof object.startTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.OrganizationEvent.startTime: object expected");
-                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime);
+                                message.startTime = $root.google.protobuf.Timestamp.fromObject(object.startTime, long + 1);
                             }
                             if (object.endTime != null) {
                                 if (typeof object.endTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.OrganizationEvent.endTime: object expected");
-                                message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime);
+                                message.endTime = $root.google.protobuf.Timestamp.fromObject(object.endTime, long + 1);
                             }
                             if (object.nextUpdateTime != null) {
                                 if (typeof object.nextUpdateTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.OrganizationEvent.nextUpdateTime: object expected");
-                                message.nextUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.nextUpdateTime);
+                                message.nextUpdateTime = $root.google.protobuf.Timestamp.fromObject(object.nextUpdateTime, long + 1);
                             }
                             return message;
                         };
@@ -1674,7 +1698,7 @@
                         function EventUpdate(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1779,9 +1803,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EventUpdate.decode = function decode(reader, length, error) {
+                        EventUpdate.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.EventUpdate();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1789,7 +1817,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
@@ -1809,7 +1837,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1840,11 +1868,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EventUpdate.verify = function verify(message) {
+                        EventUpdate.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -1871,14 +1903,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.EventUpdate} EventUpdate
                          */
-                        EventUpdate.fromObject = function fromObject(object) {
+                        EventUpdate.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.EventUpdate)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.EventUpdate();
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.EventUpdate.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             if (object.title != null)
                                 message.title = String(object.title);
@@ -1973,7 +2009,7 @@
                         function Location(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2038,9 +2074,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Location.decode = function decode(reader, length, error) {
+                        Location.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.Location();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2052,7 +2092,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2083,9 +2123,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Location.verify = function verify(message) {
+                        Location.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.locationName != null && message.hasOwnProperty("locationName"))
                                 if (!$util.isString(message.locationName))
                                     return "locationName: string expected";
@@ -2100,9 +2144,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.Location} Location
                          */
-                        Location.fromObject = function fromObject(object) {
+                        Location.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.Location)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.Location();
                             if (object.locationName != null)
                                 message.locationName = String(object.locationName);
@@ -2179,7 +2227,7 @@
                         function Product(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2254,9 +2302,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Product.decode = function decode(reader, length, error) {
+                        Product.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.Product();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2272,7 +2324,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2303,9 +2355,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Product.verify = function verify(message) {
+                        Product.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.productName != null && message.hasOwnProperty("productName"))
                                 if (!$util.isString(message.productName))
                                     return "productName: string expected";
@@ -2323,9 +2379,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.Product} Product
                          */
-                        Product.fromObject = function fromObject(object) {
+                        Product.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.Product)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.Product();
                             if (object.productName != null)
                                 message.productName = String(object.productName);
@@ -2408,7 +2468,7 @@
                         function EventImpact(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2483,9 +2543,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        EventImpact.decode = function decode(reader, length, error) {
+                        EventImpact.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.EventImpact();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2493,15 +2557,15 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.product = $root.google.cloud.servicehealth.v1.Product.decode(reader, reader.uint32());
+                                        message.product = $root.google.cloud.servicehealth.v1.Product.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 2: {
-                                        message.location = $root.google.cloud.servicehealth.v1.Location.decode(reader, reader.uint32());
+                                        message.location = $root.google.cloud.servicehealth.v1.Location.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2532,16 +2596,20 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        EventImpact.verify = function verify(message) {
+                        EventImpact.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.product != null && message.hasOwnProperty("product")) {
-                                var error = $root.google.cloud.servicehealth.v1.Product.verify(message.product);
+                                var error = $root.google.cloud.servicehealth.v1.Product.verify(message.product, long + 1);
                                 if (error)
                                     return "product." + error;
                             }
                             if (message.location != null && message.hasOwnProperty("location")) {
-                                var error = $root.google.cloud.servicehealth.v1.Location.verify(message.location);
+                                var error = $root.google.cloud.servicehealth.v1.Location.verify(message.location, long + 1);
                                 if (error)
                                     return "location." + error;
                             }
@@ -2556,19 +2624,23 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.EventImpact} EventImpact
                          */
-                        EventImpact.fromObject = function fromObject(object) {
+                        EventImpact.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.EventImpact)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.EventImpact();
                             if (object.product != null) {
                                 if (typeof object.product !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.EventImpact.product: object expected");
-                                message.product = $root.google.cloud.servicehealth.v1.Product.fromObject(object.product);
+                                message.product = $root.google.cloud.servicehealth.v1.Product.fromObject(object.product, long + 1);
                             }
                             if (object.location != null) {
                                 if (typeof object.location !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.EventImpact.location: object expected");
-                                message.location = $root.google.cloud.servicehealth.v1.Location.fromObject(object.location);
+                                message.location = $root.google.cloud.servicehealth.v1.Location.fromObject(object.location, long + 1);
                             }
                             return message;
                         };
@@ -2650,7 +2722,7 @@
                             this.events = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2746,9 +2818,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        OrganizationImpact.decode = function decode(reader, length, error) {
+                        OrganizationImpact.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.OrganizationImpact();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2766,15 +2842,15 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.asset = $root.google.cloud.servicehealth.v1.Asset.decode(reader, reader.uint32());
+                                        message.asset = $root.google.cloud.servicehealth.v1.Asset.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 case 4: {
-                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.updateTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2805,9 +2881,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        OrganizationImpact.verify = function verify(message) {
+                        OrganizationImpact.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -2819,12 +2899,12 @@
                                         return "events: string[] expected";
                             }
                             if (message.asset != null && message.hasOwnProperty("asset")) {
-                                var error = $root.google.cloud.servicehealth.v1.Asset.verify(message.asset);
+                                var error = $root.google.cloud.servicehealth.v1.Asset.verify(message.asset, long + 1);
                                 if (error)
                                     return "asset." + error;
                             }
                             if (message.updateTime != null && message.hasOwnProperty("updateTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.updateTime, long + 1);
                                 if (error)
                                     return "updateTime." + error;
                             }
@@ -2839,9 +2919,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.OrganizationImpact} OrganizationImpact
                          */
-                        OrganizationImpact.fromObject = function fromObject(object) {
+                        OrganizationImpact.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.OrganizationImpact)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.OrganizationImpact();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -2855,12 +2939,12 @@
                             if (object.asset != null) {
                                 if (typeof object.asset !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.OrganizationImpact.asset: object expected");
-                                message.asset = $root.google.cloud.servicehealth.v1.Asset.fromObject(object.asset);
+                                message.asset = $root.google.cloud.servicehealth.v1.Asset.fromObject(object.asset, long + 1);
                             }
                             if (object.updateTime != null) {
                                 if (typeof object.updateTime !== "object")
                                     throw TypeError(".google.cloud.servicehealth.v1.OrganizationImpact.updateTime: object expected");
-                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime);
+                                message.updateTime = $root.google.protobuf.Timestamp.fromObject(object.updateTime, long + 1);
                             }
                             return message;
                         };
@@ -2949,7 +3033,7 @@
                         function Asset(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3024,9 +3108,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Asset.decode = function decode(reader, length, error) {
+                        Asset.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.Asset();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3042,7 +3130,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3073,9 +3161,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Asset.verify = function verify(message) {
+                        Asset.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.assetName != null && message.hasOwnProperty("assetName"))
                                 if (!$util.isString(message.assetName))
                                     return "assetName: string expected";
@@ -3093,9 +3185,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.Asset} Asset
                          */
-                        Asset.fromObject = function fromObject(object) {
+                        Asset.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.Asset)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.Asset();
                             if (object.assetName != null)
                                 message.assetName = String(object.assetName);
@@ -3181,7 +3277,7 @@
                         function ListEventsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3286,9 +3382,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEventsRequest.decode = function decode(reader, length, error) {
+                        ListEventsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.ListEventsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3316,7 +3416,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3347,9 +3447,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEventsRequest.verify = function verify(message) {
+                        ListEventsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -3382,9 +3486,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.ListEventsRequest} ListEventsRequest
                          */
-                        ListEventsRequest.fromObject = function fromObject(object) {
+                        ListEventsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.ListEventsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.ListEventsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -3503,7 +3611,7 @@
                             this.unreachable = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3590,9 +3698,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListEventsResponse.decode = function decode(reader, length, error) {
+                        ListEventsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.ListEventsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3602,7 +3714,7 @@
                                 case 1: {
                                         if (!(message.events && message.events.length))
                                             message.events = [];
-                                        message.events.push($root.google.cloud.servicehealth.v1.Event.decode(reader, reader.uint32()));
+                                        message.events.push($root.google.cloud.servicehealth.v1.Event.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -3616,7 +3728,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3647,14 +3759,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListEventsResponse.verify = function verify(message) {
+                        ListEventsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.events != null && message.hasOwnProperty("events")) {
                                 if (!Array.isArray(message.events))
                                     return "events: array expected";
                                 for (var i = 0; i < message.events.length; ++i) {
-                                    var error = $root.google.cloud.servicehealth.v1.Event.verify(message.events[i]);
+                                    var error = $root.google.cloud.servicehealth.v1.Event.verify(message.events[i], long + 1);
                                     if (error)
                                         return "events." + error;
                                 }
@@ -3680,9 +3796,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.ListEventsResponse} ListEventsResponse
                          */
-                        ListEventsResponse.fromObject = function fromObject(object) {
+                        ListEventsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.ListEventsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.ListEventsResponse();
                             if (object.events) {
                                 if (!Array.isArray(object.events))
@@ -3691,7 +3811,7 @@
                                 for (var i = 0; i < object.events.length; ++i) {
                                     if (typeof object.events[i] !== "object")
                                         throw TypeError(".google.cloud.servicehealth.v1.ListEventsResponse.events: object expected");
-                                    message.events[i] = $root.google.cloud.servicehealth.v1.Event.fromObject(object.events[i]);
+                                    message.events[i] = $root.google.cloud.servicehealth.v1.Event.fromObject(object.events[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -3789,7 +3909,7 @@
                         function GetEventRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3854,9 +3974,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEventRequest.decode = function decode(reader, length, error) {
+                        GetEventRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.GetEventRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3868,7 +3992,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3899,9 +4023,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEventRequest.verify = function verify(message) {
+                        GetEventRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -3916,9 +4044,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.GetEventRequest} GetEventRequest
                          */
-                        GetEventRequest.fromObject = function fromObject(object) {
+                        GetEventRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.GetEventRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.GetEventRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -3998,7 +4130,7 @@
                         function ListOrganizationEventsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4103,9 +4235,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListOrganizationEventsRequest.decode = function decode(reader, length, error) {
+                        ListOrganizationEventsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.ListOrganizationEventsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4133,7 +4269,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4164,9 +4300,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListOrganizationEventsRequest.verify = function verify(message) {
+                        ListOrganizationEventsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -4199,9 +4339,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.ListOrganizationEventsRequest} ListOrganizationEventsRequest
                          */
-                        ListOrganizationEventsRequest.fromObject = function fromObject(object) {
+                        ListOrganizationEventsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.ListOrganizationEventsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.ListOrganizationEventsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -4320,7 +4464,7 @@
                             this.unreachable = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4407,9 +4551,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListOrganizationEventsResponse.decode = function decode(reader, length, error) {
+                        ListOrganizationEventsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.ListOrganizationEventsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4419,7 +4567,7 @@
                                 case 1: {
                                         if (!(message.organizationEvents && message.organizationEvents.length))
                                             message.organizationEvents = [];
-                                        message.organizationEvents.push($root.google.cloud.servicehealth.v1.OrganizationEvent.decode(reader, reader.uint32()));
+                                        message.organizationEvents.push($root.google.cloud.servicehealth.v1.OrganizationEvent.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -4433,7 +4581,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4464,14 +4612,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListOrganizationEventsResponse.verify = function verify(message) {
+                        ListOrganizationEventsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.organizationEvents != null && message.hasOwnProperty("organizationEvents")) {
                                 if (!Array.isArray(message.organizationEvents))
                                     return "organizationEvents: array expected";
                                 for (var i = 0; i < message.organizationEvents.length; ++i) {
-                                    var error = $root.google.cloud.servicehealth.v1.OrganizationEvent.verify(message.organizationEvents[i]);
+                                    var error = $root.google.cloud.servicehealth.v1.OrganizationEvent.verify(message.organizationEvents[i], long + 1);
                                     if (error)
                                         return "organizationEvents." + error;
                                 }
@@ -4497,9 +4649,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.ListOrganizationEventsResponse} ListOrganizationEventsResponse
                          */
-                        ListOrganizationEventsResponse.fromObject = function fromObject(object) {
+                        ListOrganizationEventsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.ListOrganizationEventsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.ListOrganizationEventsResponse();
                             if (object.organizationEvents) {
                                 if (!Array.isArray(object.organizationEvents))
@@ -4508,7 +4664,7 @@
                                 for (var i = 0; i < object.organizationEvents.length; ++i) {
                                     if (typeof object.organizationEvents[i] !== "object")
                                         throw TypeError(".google.cloud.servicehealth.v1.ListOrganizationEventsResponse.organizationEvents: object expected");
-                                    message.organizationEvents[i] = $root.google.cloud.servicehealth.v1.OrganizationEvent.fromObject(object.organizationEvents[i]);
+                                    message.organizationEvents[i] = $root.google.cloud.servicehealth.v1.OrganizationEvent.fromObject(object.organizationEvents[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -4606,7 +4762,7 @@
                         function GetOrganizationEventRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4671,9 +4827,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetOrganizationEventRequest.decode = function decode(reader, length, error) {
+                        GetOrganizationEventRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.GetOrganizationEventRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4685,7 +4845,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4716,9 +4876,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetOrganizationEventRequest.verify = function verify(message) {
+                        GetOrganizationEventRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -4733,9 +4897,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.GetOrganizationEventRequest} GetOrganizationEventRequest
                          */
-                        GetOrganizationEventRequest.fromObject = function fromObject(object) {
+                        GetOrganizationEventRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.GetOrganizationEventRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.GetOrganizationEventRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -4814,7 +4982,7 @@
                         function ListOrganizationImpactsRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -4909,9 +5077,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListOrganizationImpactsRequest.decode = function decode(reader, length, error) {
+                        ListOrganizationImpactsRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -4935,7 +5107,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -4966,9 +5138,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListOrganizationImpactsRequest.verify = function verify(message) {
+                        ListOrganizationImpactsRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.parent != null && message.hasOwnProperty("parent"))
                                 if (!$util.isString(message.parent))
                                     return "parent: string expected";
@@ -4992,9 +5168,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.ListOrganizationImpactsRequest} ListOrganizationImpactsRequest
                          */
-                        ListOrganizationImpactsRequest.fromObject = function fromObject(object) {
+                        ListOrganizationImpactsRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest();
                             if (object.parent != null)
                                 message.parent = String(object.parent);
@@ -5090,7 +5270,7 @@
                             this.unreachable = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5177,9 +5357,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        ListOrganizationImpactsResponse.decode = function decode(reader, length, error) {
+                        ListOrganizationImpactsResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.ListOrganizationImpactsResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5189,7 +5373,7 @@
                                 case 1: {
                                         if (!(message.organizationImpacts && message.organizationImpacts.length))
                                             message.organizationImpacts = [];
-                                        message.organizationImpacts.push($root.google.cloud.servicehealth.v1.OrganizationImpact.decode(reader, reader.uint32()));
+                                        message.organizationImpacts.push($root.google.cloud.servicehealth.v1.OrganizationImpact.decode(reader, reader.uint32(), undefined, long + 1));
                                         break;
                                     }
                                 case 2: {
@@ -5203,7 +5387,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5234,14 +5418,18 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        ListOrganizationImpactsResponse.verify = function verify(message) {
+                        ListOrganizationImpactsResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.organizationImpacts != null && message.hasOwnProperty("organizationImpacts")) {
                                 if (!Array.isArray(message.organizationImpacts))
                                     return "organizationImpacts: array expected";
                                 for (var i = 0; i < message.organizationImpacts.length; ++i) {
-                                    var error = $root.google.cloud.servicehealth.v1.OrganizationImpact.verify(message.organizationImpacts[i]);
+                                    var error = $root.google.cloud.servicehealth.v1.OrganizationImpact.verify(message.organizationImpacts[i], long + 1);
                                     if (error)
                                         return "organizationImpacts." + error;
                                 }
@@ -5267,9 +5455,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.ListOrganizationImpactsResponse} ListOrganizationImpactsResponse
                          */
-                        ListOrganizationImpactsResponse.fromObject = function fromObject(object) {
+                        ListOrganizationImpactsResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.ListOrganizationImpactsResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.ListOrganizationImpactsResponse();
                             if (object.organizationImpacts) {
                                 if (!Array.isArray(object.organizationImpacts))
@@ -5278,7 +5470,7 @@
                                 for (var i = 0; i < object.organizationImpacts.length; ++i) {
                                     if (typeof object.organizationImpacts[i] !== "object")
                                         throw TypeError(".google.cloud.servicehealth.v1.ListOrganizationImpactsResponse.organizationImpacts: object expected");
-                                    message.organizationImpacts[i] = $root.google.cloud.servicehealth.v1.OrganizationImpact.fromObject(object.organizationImpacts[i]);
+                                    message.organizationImpacts[i] = $root.google.cloud.servicehealth.v1.OrganizationImpact.fromObject(object.organizationImpacts[i], long + 1);
                                 }
                             }
                             if (object.nextPageToken != null)
@@ -5376,7 +5568,7 @@
                         function GetOrganizationImpactRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -5441,9 +5633,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetOrganizationImpactRequest.decode = function decode(reader, length, error) {
+                        GetOrganizationImpactRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.servicehealth.v1.GetOrganizationImpactRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -5455,7 +5651,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -5486,9 +5682,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetOrganizationImpactRequest.verify = function verify(message) {
+                        GetOrganizationImpactRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -5503,9 +5703,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.servicehealth.v1.GetOrganizationImpactRequest} GetOrganizationImpactRequest
                          */
-                        GetOrganizationImpactRequest.fromObject = function fromObject(object) {
+                        GetOrganizationImpactRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.servicehealth.v1.GetOrganizationImpactRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.servicehealth.v1.GetOrganizationImpactRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -5900,7 +6104,7 @@
                     this.style = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -6030,9 +6234,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceDescriptor.decode = function decode(reader, length, error) {
+                ResourceDescriptor.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceDescriptor();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -6077,7 +6285,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -6108,9 +6316,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceDescriptor.verify = function verify(message) {
+                ResourceDescriptor.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -6162,9 +6374,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceDescriptor} ResourceDescriptor
                  */
-                ResourceDescriptor.fromObject = function fromObject(object) {
+                ResourceDescriptor.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceDescriptor)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceDescriptor();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -6352,7 +6568,7 @@
                 function ResourceReference(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -6427,9 +6643,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceReference.decode = function decode(reader, length, error) {
+                ResourceReference.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceReference();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -6445,7 +6665,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -6476,9 +6696,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceReference.verify = function verify(message) {
+                ResourceReference.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -6496,9 +6720,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceReference} ResourceReference
                  */
-                ResourceReference.fromObject = function fromObject(object) {
+                ResourceReference.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceReference)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceReference();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -6582,7 +6810,7 @@
                     this.rules = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -6658,9 +6886,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Http.decode = function decode(reader, length, error) {
+                Http.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -6670,7 +6902,7 @@
                         case 1: {
                                 if (!(message.rules && message.rules.length))
                                     message.rules = [];
-                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
@@ -6678,7 +6910,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -6709,14 +6941,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Http.verify = function verify(message) {
+                Http.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.rules != null && message.hasOwnProperty("rules")) {
                         if (!Array.isArray(message.rules))
                             return "rules: array expected";
                         for (var i = 0; i < message.rules.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.rules[i]);
+                            var error = $root.google.api.HttpRule.verify(message.rules[i], long + 1);
                             if (error)
                                 return "rules." + error;
                         }
@@ -6735,9 +6971,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Http} Http
                  */
-                Http.fromObject = function fromObject(object) {
+                Http.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Http)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Http();
                     if (object.rules) {
                         if (!Array.isArray(object.rules))
@@ -6746,7 +6986,7 @@
                         for (var i = 0; i < object.rules.length; ++i) {
                             if (typeof object.rules[i] !== "object")
                                 throw TypeError(".google.api.Http.rules: object expected");
-                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]);
+                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i], long + 1);
                         }
                     }
                     if (object.fullyDecodeReservedExpansion != null)
@@ -6840,7 +7080,7 @@
                     this.additionalBindings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -7010,9 +7250,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                HttpRule.decode = function decode(reader, length, error) {
+                HttpRule.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -7044,7 +7288,7 @@
                                 break;
                             }
                         case 8: {
-                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32());
+                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 7: {
@@ -7058,11 +7302,11 @@
                         case 11: {
                                 if (!(message.additionalBindings && message.additionalBindings.length))
                                     message.additionalBindings = [];
-                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -7093,9 +7337,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                HttpRule.verify = function verify(message) {
+                HttpRule.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     var properties = {};
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
@@ -7138,7 +7386,7 @@
                             return "pattern: multiple values";
                         properties.pattern = 1;
                         {
-                            var error = $root.google.api.CustomHttpPattern.verify(message.custom);
+                            var error = $root.google.api.CustomHttpPattern.verify(message.custom, long + 1);
                             if (error)
                                 return "custom." + error;
                         }
@@ -7153,7 +7401,7 @@
                         if (!Array.isArray(message.additionalBindings))
                             return "additionalBindings: array expected";
                         for (var i = 0; i < message.additionalBindings.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]);
+                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i], long + 1);
                             if (error)
                                 return "additionalBindings." + error;
                         }
@@ -7169,9 +7417,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.HttpRule} HttpRule
                  */
-                HttpRule.fromObject = function fromObject(object) {
+                HttpRule.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.HttpRule)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.HttpRule();
                     if (object.selector != null)
                         message.selector = String(object.selector);
@@ -7188,7 +7440,7 @@
                     if (object.custom != null) {
                         if (typeof object.custom !== "object")
                             throw TypeError(".google.api.HttpRule.custom: object expected");
-                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom);
+                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom, long + 1);
                     }
                     if (object.body != null)
                         message.body = String(object.body);
@@ -7201,7 +7453,7 @@
                         for (var i = 0; i < object.additionalBindings.length; ++i) {
                             if (typeof object.additionalBindings[i] !== "object")
                                 throw TypeError(".google.api.HttpRule.additionalBindings: object expected");
-                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]);
+                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i], long + 1);
                         }
                     }
                     return message;
@@ -7321,7 +7573,7 @@
                 function CustomHttpPattern(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -7396,9 +7648,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CustomHttpPattern.decode = function decode(reader, length, error) {
+                CustomHttpPattern.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -7414,7 +7670,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -7445,9 +7701,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CustomHttpPattern.verify = function verify(message) {
+                CustomHttpPattern.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.kind != null && message.hasOwnProperty("kind"))
                         if (!$util.isString(message.kind))
                             return "kind: string expected";
@@ -7465,9 +7725,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CustomHttpPattern} CustomHttpPattern
                  */
-                CustomHttpPattern.fromObject = function fromObject(object) {
+                CustomHttpPattern.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CustomHttpPattern)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CustomHttpPattern();
                     if (object.kind != null)
                         message.kind = String(object.kind);
@@ -7537,6 +7801,7 @@
                  * @interface ICommonLanguageSettings
                  * @property {string|null} [referenceDocsUri] CommonLanguageSettings referenceDocsUri
                  * @property {Array.<google.api.ClientLibraryDestination>|null} [destinations] CommonLanguageSettings destinations
+                 * @property {google.api.ISelectiveGapicGeneration|null} [selectiveGapicGeneration] CommonLanguageSettings selectiveGapicGeneration
                  */
     
                 /**
@@ -7551,7 +7816,7 @@
                     this.destinations = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -7571,6 +7836,14 @@
                  */
                 CommonLanguageSettings.prototype.destinations = $util.emptyArray;
     
+                /**
+                 * CommonLanguageSettings selectiveGapicGeneration.
+                 * @member {google.api.ISelectiveGapicGeneration|null|undefined} selectiveGapicGeneration
+                 * @memberof google.api.CommonLanguageSettings
+                 * @instance
+                 */
+                CommonLanguageSettings.prototype.selectiveGapicGeneration = null;
+    
                 /**
                  * Creates a new CommonLanguageSettings instance using the specified properties.
                  * @function create
@@ -7603,6 +7876,8 @@
                             writer.int32(message.destinations[i]);
                         writer.ldelim();
                     }
+                    if (message.selectiveGapicGeneration != null && Object.hasOwnProperty.call(message, "selectiveGapicGeneration"))
+                        $root.google.api.SelectiveGapicGeneration.encode(message.selectiveGapicGeneration, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
                     return writer;
                 };
     
@@ -7630,9 +7905,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CommonLanguageSettings.decode = function decode(reader, length, error) {
+                CommonLanguageSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CommonLanguageSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -7654,8 +7933,12 @@
                                     message.destinations.push(reader.int32());
                                 break;
                             }
+                        case 3: {
+                                message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -7686,9 +7969,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CommonLanguageSettings.verify = function verify(message) {
+                CommonLanguageSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
                         if (!$util.isString(message.referenceDocsUri))
                             return "referenceDocsUri: string expected";
@@ -7705,6 +7992,11 @@
                                 break;
                             }
                     }
+                    if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) {
+                        var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration, long + 1);
+                        if (error)
+                            return "selectiveGapicGeneration." + error;
+                    }
                     return null;
                 };
     
@@ -7716,9 +8008,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings
                  */
-                CommonLanguageSettings.fromObject = function fromObject(object) {
+                CommonLanguageSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CommonLanguageSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CommonLanguageSettings();
                     if (object.referenceDocsUri != null)
                         message.referenceDocsUri = String(object.referenceDocsUri);
@@ -7747,6 +8043,11 @@
                                 break;
                             }
                     }
+                    if (object.selectiveGapicGeneration != null) {
+                        if (typeof object.selectiveGapicGeneration !== "object")
+                            throw TypeError(".google.api.CommonLanguageSettings.selectiveGapicGeneration: object expected");
+                        message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration, long + 1);
+                    }
                     return message;
                 };
     
@@ -7765,8 +8066,10 @@
                     var object = {};
                     if (options.arrays || options.defaults)
                         object.destinations = [];
-                    if (options.defaults)
+                    if (options.defaults) {
                         object.referenceDocsUri = "";
+                        object.selectiveGapicGeneration = null;
+                    }
                     if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
                         object.referenceDocsUri = message.referenceDocsUri;
                     if (message.destinations && message.destinations.length) {
@@ -7774,6 +8077,8 @@
                         for (var j = 0; j < message.destinations.length; ++j)
                             object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] === undefined ? message.destinations[j] : $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j];
                     }
+                    if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration"))
+                        object.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.toObject(message.selectiveGapicGeneration, options);
                     return object;
                 };
     
@@ -7836,7 +8141,7 @@
                 function ClientLibrarySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -8001,9 +8306,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ClientLibrarySettings.decode = function decode(reader, length, error) {
+                ClientLibrarySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ClientLibrarySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -8023,39 +8332,39 @@
                                 break;
                             }
                         case 21: {
-                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32());
+                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 22: {
-                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32());
+                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 23: {
-                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32());
+                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 24: {
-                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32());
+                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 25: {
-                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32());
+                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 26: {
-                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32());
+                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 27: {
-                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32());
+                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 28: {
-                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32());
+                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -8086,9 +8395,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ClientLibrarySettings.verify = function verify(message) {
+                ClientLibrarySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.version != null && message.hasOwnProperty("version"))
                         if (!$util.isString(message.version))
                             return "version: string expected";
@@ -8110,42 +8423,42 @@
                         if (typeof message.restNumericEnums !== "boolean")
                             return "restNumericEnums: boolean expected";
                     if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) {
-                        var error = $root.google.api.JavaSettings.verify(message.javaSettings);
+                        var error = $root.google.api.JavaSettings.verify(message.javaSettings, long + 1);
                         if (error)
                             return "javaSettings." + error;
                     }
                     if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) {
-                        var error = $root.google.api.CppSettings.verify(message.cppSettings);
+                        var error = $root.google.api.CppSettings.verify(message.cppSettings, long + 1);
                         if (error)
                             return "cppSettings." + error;
                     }
                     if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) {
-                        var error = $root.google.api.PhpSettings.verify(message.phpSettings);
+                        var error = $root.google.api.PhpSettings.verify(message.phpSettings, long + 1);
                         if (error)
                             return "phpSettings." + error;
                     }
                     if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) {
-                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings);
+                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings, long + 1);
                         if (error)
                             return "pythonSettings." + error;
                     }
                     if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) {
-                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings);
+                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings, long + 1);
                         if (error)
                             return "nodeSettings." + error;
                     }
                     if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) {
-                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings);
+                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings, long + 1);
                         if (error)
                             return "dotnetSettings." + error;
                     }
                     if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) {
-                        var error = $root.google.api.RubySettings.verify(message.rubySettings);
+                        var error = $root.google.api.RubySettings.verify(message.rubySettings, long + 1);
                         if (error)
                             return "rubySettings." + error;
                     }
                     if (message.goSettings != null && message.hasOwnProperty("goSettings")) {
-                        var error = $root.google.api.GoSettings.verify(message.goSettings);
+                        var error = $root.google.api.GoSettings.verify(message.goSettings, long + 1);
                         if (error)
                             return "goSettings." + error;
                     }
@@ -8160,9 +8473,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings
                  */
-                ClientLibrarySettings.fromObject = function fromObject(object) {
+                ClientLibrarySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ClientLibrarySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ClientLibrarySettings();
                     if (object.version != null)
                         message.version = String(object.version);
@@ -8211,42 +8528,42 @@
                     if (object.javaSettings != null) {
                         if (typeof object.javaSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.javaSettings: object expected");
-                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings);
+                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings, long + 1);
                     }
                     if (object.cppSettings != null) {
                         if (typeof object.cppSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.cppSettings: object expected");
-                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings);
+                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings, long + 1);
                     }
                     if (object.phpSettings != null) {
                         if (typeof object.phpSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.phpSettings: object expected");
-                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings);
+                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings, long + 1);
                     }
                     if (object.pythonSettings != null) {
                         if (typeof object.pythonSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.pythonSettings: object expected");
-                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings);
+                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings, long + 1);
                     }
                     if (object.nodeSettings != null) {
                         if (typeof object.nodeSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.nodeSettings: object expected");
-                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings);
+                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings, long + 1);
                     }
                     if (object.dotnetSettings != null) {
                         if (typeof object.dotnetSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.dotnetSettings: object expected");
-                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings);
+                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings, long + 1);
                     }
                     if (object.rubySettings != null) {
                         if (typeof object.rubySettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.rubySettings: object expected");
-                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings);
+                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings, long + 1);
                     }
                     if (object.goSettings != null) {
                         if (typeof object.goSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.goSettings: object expected");
-                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings);
+                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings, long + 1);
                     }
                     return message;
                 };
@@ -8364,7 +8681,7 @@
                     this.librarySettings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -8532,9 +8849,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Publishing.decode = function decode(reader, length, error) {
+                Publishing.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Publishing();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -8544,7 +8865,7 @@
                         case 2: {
                                 if (!(message.methodSettings && message.methodSettings.length))
                                     message.methodSettings = [];
-                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32()));
+                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 101: {
@@ -8580,7 +8901,7 @@
                         case 109: {
                                 if (!(message.librarySettings && message.librarySettings.length))
                                     message.librarySettings = [];
-                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32()));
+                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 110: {
@@ -8592,7 +8913,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -8623,14 +8944,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Publishing.verify = function verify(message) {
+                Publishing.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.methodSettings != null && message.hasOwnProperty("methodSettings")) {
                         if (!Array.isArray(message.methodSettings))
                             return "methodSettings: array expected";
                         for (var i = 0; i < message.methodSettings.length; ++i) {
-                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i]);
+                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i], long + 1);
                             if (error)
                                 return "methodSettings." + error;
                         }
@@ -8675,7 +9000,7 @@
                         if (!Array.isArray(message.librarySettings))
                             return "librarySettings: array expected";
                         for (var i = 0; i < message.librarySettings.length; ++i) {
-                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i]);
+                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i], long + 1);
                             if (error)
                                 return "librarySettings." + error;
                         }
@@ -8697,9 +9022,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Publishing} Publishing
                  */
-                Publishing.fromObject = function fromObject(object) {
+                Publishing.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Publishing)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Publishing();
                     if (object.methodSettings) {
                         if (!Array.isArray(object.methodSettings))
@@ -8708,7 +9037,7 @@
                         for (var i = 0; i < object.methodSettings.length; ++i) {
                             if (typeof object.methodSettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.methodSettings: object expected");
-                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i]);
+                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i], long + 1);
                         }
                     }
                     if (object.newIssueUri != null)
@@ -8775,7 +9104,7 @@
                         for (var i = 0; i < object.librarySettings.length; ++i) {
                             if (typeof object.librarySettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.librarySettings: object expected");
-                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i]);
+                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i], long + 1);
                         }
                     }
                     if (object.protoReferenceDocumentationUri != null)
@@ -8899,7 +9228,7 @@
                     this.serviceClassNames = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -8985,9 +9314,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                JavaSettings.decode = function decode(reader, length, error) {
+                JavaSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.JavaSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -9014,19 +9347,21 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.serviceClassNames, key);
                                 message.serviceClassNames[key] = value;
                                 break;
                             }
                         case 3: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -9057,9 +9392,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                JavaSettings.verify = function verify(message) {
+                JavaSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage"))
                         if (!$util.isString(message.libraryPackage))
                             return "libraryPackage: string expected";
@@ -9072,7 +9411,7 @@
                                 return "serviceClassNames: string{k:string} expected";
                     }
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -9087,9 +9426,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.JavaSettings} JavaSettings
                  */
-                JavaSettings.fromObject = function fromObject(object) {
+                JavaSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.JavaSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.JavaSettings();
                     if (object.libraryPackage != null)
                         message.libraryPackage = String(object.libraryPackage);
@@ -9097,13 +9440,16 @@
                         if (typeof object.serviceClassNames !== "object")
                             throw TypeError(".google.api.JavaSettings.serviceClassNames: object expected");
                         message.serviceClassNames = {};
-                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.serviceClassNames, keys[i]);
                             message.serviceClassNames[keys[i]] = String(object.serviceClassNames[keys[i]]);
+                        }
                     }
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.JavaSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -9132,8 +9478,11 @@
                     var keys2;
                     if (message.serviceClassNames && (keys2 = Object.keys(message.serviceClassNames)).length) {
                         object.serviceClassNames = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.serviceClassNames, keys2[j]);
                             object.serviceClassNames[keys2[j]] = message.serviceClassNames[keys2[j]];
+                        }
                     }
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
@@ -9189,7 +9538,7 @@
                 function CppSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -9254,9 +9603,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CppSettings.decode = function decode(reader, length, error) {
+                CppSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CppSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -9264,11 +9617,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -9299,11 +9652,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CppSettings.verify = function verify(message) {
+                CppSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -9318,14 +9675,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CppSettings} CppSettings
                  */
-                CppSettings.fromObject = function fromObject(object) {
+                CppSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CppSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CppSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.CppSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -9399,7 +9760,7 @@
                 function PhpSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -9464,9 +9825,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PhpSettings.decode = function decode(reader, length, error) {
+                PhpSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PhpSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -9474,11 +9839,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -9509,11 +9874,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PhpSettings.verify = function verify(message) {
+                PhpSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -9528,14 +9897,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PhpSettings} PhpSettings
                  */
-                PhpSettings.fromObject = function fromObject(object) {
+                PhpSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PhpSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PhpSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PhpSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -9596,6 +9969,7 @@
                  * @memberof google.api
                  * @interface IPythonSettings
                  * @property {google.api.ICommonLanguageSettings|null} [common] PythonSettings common
+                 * @property {google.api.PythonSettings.IExperimentalFeatures|null} [experimentalFeatures] PythonSettings experimentalFeatures
                  */
     
                 /**
@@ -9609,7 +9983,7 @@
                 function PythonSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -9621,6 +9995,14 @@
                  */
                 PythonSettings.prototype.common = null;
     
+                /**
+                 * PythonSettings experimentalFeatures.
+                 * @member {google.api.PythonSettings.IExperimentalFeatures|null|undefined} experimentalFeatures
+                 * @memberof google.api.PythonSettings
+                 * @instance
+                 */
+                PythonSettings.prototype.experimentalFeatures = null;
+    
                 /**
                  * Creates a new PythonSettings instance using the specified properties.
                  * @function create
@@ -9647,6 +10029,8 @@
                         writer = $Writer.create();
                     if (message.common != null && Object.hasOwnProperty.call(message, "common"))
                         $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.experimentalFeatures != null && Object.hasOwnProperty.call(message, "experimentalFeatures"))
+                        $root.google.api.PythonSettings.ExperimentalFeatures.encode(message.experimentalFeatures, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                     return writer;
                 };
     
@@ -9674,9 +10058,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PythonSettings.decode = function decode(reader, length, error) {
+                PythonSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -9684,11 +10072,15 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
+                        case 2: {
+                                message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -9719,14 +10111,23 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PythonSettings.verify = function verify(message) {
+                PythonSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
+                    if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) {
+                        var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures, long + 1);
+                        if (error)
+                            return "experimentalFeatures." + error;
+                    }
                     return null;
                 };
     
@@ -9738,14 +10139,23 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PythonSettings} PythonSettings
                  */
-                PythonSettings.fromObject = function fromObject(object) {
+                PythonSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PythonSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PythonSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PythonSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
+                    }
+                    if (object.experimentalFeatures != null) {
+                        if (typeof object.experimentalFeatures !== "object")
+                            throw TypeError(".google.api.PythonSettings.experimentalFeatures: object expected");
+                        message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures, long + 1);
                     }
                     return message;
                 };
@@ -9763,10 +10173,14 @@
                     if (!options)
                         options = {};
                     var object = {};
-                    if (options.defaults)
+                    if (options.defaults) {
                         object.common = null;
+                        object.experimentalFeatures = null;
+                    }
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures"))
+                        object.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.toObject(message.experimentalFeatures, options);
                     return object;
                 };
     
@@ -9796,6 +10210,270 @@
                     return typeUrlPrefix + "/google.api.PythonSettings";
                 };
     
+                PythonSettings.ExperimentalFeatures = (function() {
+    
+                    /**
+                     * Properties of an ExperimentalFeatures.
+                     * @memberof google.api.PythonSettings
+                     * @interface IExperimentalFeatures
+                     * @property {boolean|null} [restAsyncIoEnabled] ExperimentalFeatures restAsyncIoEnabled
+                     * @property {boolean|null} [protobufPythonicTypesEnabled] ExperimentalFeatures protobufPythonicTypesEnabled
+                     * @property {boolean|null} [unversionedPackageDisabled] ExperimentalFeatures unversionedPackageDisabled
+                     */
+    
+                    /**
+                     * Constructs a new ExperimentalFeatures.
+                     * @memberof google.api.PythonSettings
+                     * @classdesc Represents an ExperimentalFeatures.
+                     * @implements IExperimentalFeatures
+                     * @constructor
+                     * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set
+                     */
+                    function ExperimentalFeatures(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * ExperimentalFeatures restAsyncIoEnabled.
+                     * @member {boolean} restAsyncIoEnabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.restAsyncIoEnabled = false;
+    
+                    /**
+                     * ExperimentalFeatures protobufPythonicTypesEnabled.
+                     * @member {boolean} protobufPythonicTypesEnabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.protobufPythonicTypesEnabled = false;
+    
+                    /**
+                     * ExperimentalFeatures unversionedPackageDisabled.
+                     * @member {boolean} unversionedPackageDisabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.unversionedPackageDisabled = false;
+    
+                    /**
+                     * Creates a new ExperimentalFeatures instance using the specified properties.
+                     * @function create
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures instance
+                     */
+                    ExperimentalFeatures.create = function create(properties) {
+                        return new ExperimentalFeatures(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExperimentalFeatures.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.restAsyncIoEnabled != null && Object.hasOwnProperty.call(message, "restAsyncIoEnabled"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).bool(message.restAsyncIoEnabled);
+                        if (message.protobufPythonicTypesEnabled != null && Object.hasOwnProperty.call(message, "protobufPythonicTypesEnabled"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).bool(message.protobufPythonicTypesEnabled);
+                        if (message.unversionedPackageDisabled != null && Object.hasOwnProperty.call(message, "unversionedPackageDisabled"))
+                            writer.uint32(/* id 3, wireType 0 =*/24).bool(message.unversionedPackageDisabled);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExperimentalFeatures.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes an ExperimentalFeatures message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExperimentalFeatures.decode = function decode(reader, length, error, long) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings.ExperimentalFeatures();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.restAsyncIoEnabled = reader.bool();
+                                    break;
+                                }
+                            case 2: {
+                                    message.protobufPythonicTypesEnabled = reader.bool();
+                                    break;
+                                }
+                            case 3: {
+                                    message.unversionedPackageDisabled = reader.bool();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7, long);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExperimentalFeatures.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies an ExperimentalFeatures message.
+                     * @function verify
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    ExperimentalFeatures.verify = function verify(message, long) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
+                        if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
+                            if (typeof message.restAsyncIoEnabled !== "boolean")
+                                return "restAsyncIoEnabled: boolean expected";
+                        if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled"))
+                            if (typeof message.protobufPythonicTypesEnabled !== "boolean")
+                                return "protobufPythonicTypesEnabled: boolean expected";
+                        if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled"))
+                            if (typeof message.unversionedPackageDisabled !== "boolean")
+                                return "unversionedPackageDisabled: boolean expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     */
+                    ExperimentalFeatures.fromObject = function fromObject(object, long) {
+                        if (object instanceof $root.google.api.PythonSettings.ExperimentalFeatures)
+                            return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var message = new $root.google.api.PythonSettings.ExperimentalFeatures();
+                        if (object.restAsyncIoEnabled != null)
+                            message.restAsyncIoEnabled = Boolean(object.restAsyncIoEnabled);
+                        if (object.protobufPythonicTypesEnabled != null)
+                            message.protobufPythonicTypesEnabled = Boolean(object.protobufPythonicTypesEnabled);
+                        if (object.unversionedPackageDisabled != null)
+                            message.unversionedPackageDisabled = Boolean(object.unversionedPackageDisabled);
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.ExperimentalFeatures} message ExperimentalFeatures
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    ExperimentalFeatures.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.restAsyncIoEnabled = false;
+                            object.protobufPythonicTypesEnabled = false;
+                            object.unversionedPackageDisabled = false;
+                        }
+                        if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
+                            object.restAsyncIoEnabled = message.restAsyncIoEnabled;
+                        if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled"))
+                            object.protobufPythonicTypesEnabled = message.protobufPythonicTypesEnabled;
+                        if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled"))
+                            object.unversionedPackageDisabled = message.unversionedPackageDisabled;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this ExperimentalFeatures to JSON.
+                     * @function toJSON
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    ExperimentalFeatures.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for ExperimentalFeatures
+                     * @function getTypeUrl
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    ExperimentalFeatures.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.api.PythonSettings.ExperimentalFeatures";
+                    };
+    
+                    return ExperimentalFeatures;
+                })();
+    
                 return PythonSettings;
             })();
     
@@ -9819,7 +10497,7 @@
                 function NodeSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -9884,9 +10562,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                NodeSettings.decode = function decode(reader, length, error) {
+                NodeSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.NodeSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -9894,11 +10576,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -9929,11 +10611,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                NodeSettings.verify = function verify(message) {
+                NodeSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -9948,14 +10634,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.NodeSettings} NodeSettings
                  */
-                NodeSettings.fromObject = function fromObject(object) {
+                NodeSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.NodeSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.NodeSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.NodeSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -10039,7 +10729,7 @@
                     this.handwrittenSignatures = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -10159,9 +10849,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DotnetSettings.decode = function decode(reader, length, error) {
+                DotnetSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -10169,7 +10863,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 2: {
@@ -10188,10 +10882,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
                                 message.renamedServices[key] = value;
                                 break;
                             }
@@ -10211,10 +10907,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedResources, key);
                                 message.renamedResources[key] = value;
                                 break;
                             }
@@ -10237,7 +10935,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -10268,11 +10966,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DotnetSettings.verify = function verify(message) {
+                DotnetSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -10324,28 +11026,38 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.DotnetSettings} DotnetSettings
                  */
-                DotnetSettings.fromObject = function fromObject(object) {
+                DotnetSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.DotnetSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.DotnetSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.DotnetSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     if (object.renamedServices) {
                         if (typeof object.renamedServices !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedServices: object expected");
                         message.renamedServices = {};
-                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
                             message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     if (object.renamedResources) {
                         if (typeof object.renamedResources !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedResources: object expected");
                         message.renamedResources = {};
-                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedResources, keys[i]);
                             message.renamedResources[keys[i]] = String(object.renamedResources[keys[i]]);
+                        }
                     }
                     if (object.ignoredResources) {
                         if (!Array.isArray(object.ignoredResources))
@@ -10400,13 +11112,19 @@
                     var keys2;
                     if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
                         object.renamedServices = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
                             object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
                     }
                     if (message.renamedResources && (keys2 = Object.keys(message.renamedResources)).length) {
                         object.renamedResources = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedResources, keys2[j]);
                             object.renamedResources[keys2[j]] = message.renamedResources[keys2[j]];
+                        }
                     }
                     if (message.ignoredResources && message.ignoredResources.length) {
                         object.ignoredResources = [];
@@ -10475,7 +11193,7 @@
                 function RubySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -10540,9 +11258,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                RubySettings.decode = function decode(reader, length, error) {
+                RubySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RubySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -10550,11 +11272,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -10585,11 +11307,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                RubySettings.verify = function verify(message) {
+                RubySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -10604,14 +11330,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.RubySettings} RubySettings
                  */
-                RubySettings.fromObject = function fromObject(object) {
+                RubySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.RubySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.RubySettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.RubySettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -10672,6 +11402,7 @@
                  * @memberof google.api
                  * @interface IGoSettings
                  * @property {google.api.ICommonLanguageSettings|null} [common] GoSettings common
+                 * @property {Object.<string,string>|null} [renamedServices] GoSettings renamedServices
                  */
     
                 /**
@@ -10683,9 +11414,10 @@
                  * @param {google.api.IGoSettings=} [properties] Properties to set
                  */
                 function GoSettings(properties) {
+                    this.renamedServices = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -10697,6 +11429,14 @@
                  */
                 GoSettings.prototype.common = null;
     
+                /**
+                 * GoSettings renamedServices.
+                 * @member {Object.<string,string>} renamedServices
+                 * @memberof google.api.GoSettings
+                 * @instance
+                 */
+                GoSettings.prototype.renamedServices = $util.emptyObject;
+    
                 /**
                  * Creates a new GoSettings instance using the specified properties.
                  * @function create
@@ -10723,6 +11463,9 @@
                         writer = $Writer.create();
                     if (message.common != null && Object.hasOwnProperty.call(message, "common"))
                         $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices"))
+                        for (var keys = Object.keys(message.renamedServices), i = 0; i < keys.length; ++i)
+                            writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedServices[keys[i]]).ldelim();
                     return writer;
                 };
     
@@ -10750,21 +11493,50 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GoSettings.decode = function decode(reader, length, error) {
+                GoSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
-                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings();
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
                         if (tag === error)
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
+                        case 2: {
+                                if (message.renamedServices === $util.emptyObject)
+                                    message.renamedServices = {};
+                                var end2 = reader.uint32() + reader.pos;
+                                key = "";
+                                value = "";
+                                while (reader.pos < end2) {
+                                    var tag2 = reader.uint32();
+                                    switch (tag2 >>> 3) {
+                                    case 1:
+                                        key = reader.string();
+                                        break;
+                                    case 2:
+                                        value = reader.string();
+                                        break;
+                                    default:
+                                        reader.skipType(tag2 & 7, long);
+                                        break;
+                                    }
+                                }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
+                                message.renamedServices[key] = value;
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -10795,14 +11567,26 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GoSettings.verify = function verify(message) {
+                GoSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
+                    if (message.renamedServices != null && message.hasOwnProperty("renamedServices")) {
+                        if (!$util.isObject(message.renamedServices))
+                            return "renamedServices: object expected";
+                        var key = Object.keys(message.renamedServices);
+                        for (var i = 0; i < key.length; ++i)
+                            if (!$util.isString(message.renamedServices[key[i]]))
+                                return "renamedServices: string{k:string} expected";
+                    }
                     return null;
                 };
     
@@ -10814,14 +11598,28 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.GoSettings} GoSettings
                  */
-                GoSettings.fromObject = function fromObject(object) {
+                GoSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.GoSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.GoSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.GoSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
+                    }
+                    if (object.renamedServices) {
+                        if (typeof object.renamedServices !== "object")
+                            throw TypeError(".google.api.GoSettings.renamedServices: object expected");
+                        message.renamedServices = {};
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
+                            message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     return message;
                 };
@@ -10839,10 +11637,21 @@
                     if (!options)
                         options = {};
                     var object = {};
+                    if (options.objects || options.defaults)
+                        object.renamedServices = {};
                     if (options.defaults)
                         object.common = null;
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    var keys2;
+                    if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
+                        object.renamedServices = {};
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
+                            object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
+                    }
                     return object;
                 };
     
@@ -10898,7 +11707,7 @@
                     this.autoPopulatedFields = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -10984,9 +11793,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodSettings.decode = function decode(reader, length, error) {
+                MethodSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -10998,7 +11811,7 @@
                                 break;
                             }
                         case 2: {
-                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32());
+                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -11008,7 +11821,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -11039,14 +11852,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodSettings.verify = function verify(message) {
+                MethodSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
                             return "selector: string expected";
                     if (message.longRunning != null && message.hasOwnProperty("longRunning")) {
-                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning);
+                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning, long + 1);
                         if (error)
                             return "longRunning." + error;
                     }
@@ -11068,16 +11885,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.MethodSettings} MethodSettings
                  */
-                MethodSettings.fromObject = function fromObject(object) {
+                MethodSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.MethodSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.MethodSettings();
                     if (object.selector != null)
                         message.selector = String(object.selector);
                     if (object.longRunning != null) {
                         if (typeof object.longRunning !== "object")
                             throw TypeError(".google.api.MethodSettings.longRunning: object expected");
-                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning);
+                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning, long + 1);
                     }
                     if (object.autoPopulatedFields) {
                         if (!Array.isArray(object.autoPopulatedFields))
@@ -11169,7 +11990,7 @@
                     function LongRunning(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -11264,9 +12085,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    LongRunning.decode = function decode(reader, length, error) {
+                    LongRunning.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings.LongRunning();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -11274,7 +12099,7 @@
                                 break;
                             switch (tag >>> 3) {
                             case 1: {
-                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 2: {
@@ -11282,15 +12107,15 @@
                                     break;
                                 }
                             case 3: {
-                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 4: {
-                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -11321,11 +12146,15 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    LongRunning.verify = function verify(message) {
+                    LongRunning.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay, long + 1);
                             if (error)
                                 return "initialPollDelay." + error;
                         }
@@ -11333,12 +12162,12 @@
                             if (typeof message.pollDelayMultiplier !== "number")
                                 return "pollDelayMultiplier: number expected";
                         if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay, long + 1);
                             if (error)
                                 return "maxPollDelay." + error;
                         }
                         if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) {
-                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout);
+                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout, long + 1);
                             if (error)
                                 return "totalPollTimeout." + error;
                         }
@@ -11353,26 +12182,30 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.api.MethodSettings.LongRunning} LongRunning
                      */
-                    LongRunning.fromObject = function fromObject(object) {
+                    LongRunning.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.api.MethodSettings.LongRunning)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.api.MethodSettings.LongRunning();
                         if (object.initialPollDelay != null) {
                             if (typeof object.initialPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.initialPollDelay: object expected");
-                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay);
+                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay, long + 1);
                         }
                         if (object.pollDelayMultiplier != null)
                             message.pollDelayMultiplier = Number(object.pollDelayMultiplier);
                         if (object.maxPollDelay != null) {
                             if (typeof object.maxPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.maxPollDelay: object expected");
-                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay);
+                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay, long + 1);
                         }
                         if (object.totalPollTimeout != null) {
                             if (typeof object.totalPollTimeout !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.totalPollTimeout: object expected");
-                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout);
+                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout, long + 1);
                         }
                         return message;
                     };
@@ -11481,26 +12314,283 @@
                 return values;
             })();
     
-            /**
-             * LaunchStage enum.
-             * @name google.api.LaunchStage
-             * @enum {number}
-             * @property {number} LAUNCH_STAGE_UNSPECIFIED=0 LAUNCH_STAGE_UNSPECIFIED value
-             * @property {number} UNIMPLEMENTED=6 UNIMPLEMENTED value
-             * @property {number} PRELAUNCH=7 PRELAUNCH value
-             * @property {number} EARLY_ACCESS=1 EARLY_ACCESS value
-             * @property {number} ALPHA=2 ALPHA value
-             * @property {number} BETA=3 BETA value
-             * @property {number} GA=4 GA value
-             * @property {number} DEPRECATED=5 DEPRECATED value
-             */
-            api.LaunchStage = (function() {
-                var valuesById = {}, values = Object.create(valuesById);
-                values[valuesById[0] = "LAUNCH_STAGE_UNSPECIFIED"] = 0;
-                values[valuesById[6] = "UNIMPLEMENTED"] = 6;
-                values[valuesById[7] = "PRELAUNCH"] = 7;
-                values[valuesById[1] = "EARLY_ACCESS"] = 1;
-                values[valuesById[2] = "ALPHA"] = 2;
+            api.SelectiveGapicGeneration = (function() {
+    
+                /**
+                 * Properties of a SelectiveGapicGeneration.
+                 * @memberof google.api
+                 * @interface ISelectiveGapicGeneration
+                 * @property {Array.<string>|null} [methods] SelectiveGapicGeneration methods
+                 * @property {boolean|null} [generateOmittedAsInternal] SelectiveGapicGeneration generateOmittedAsInternal
+                 */
+    
+                /**
+                 * Constructs a new SelectiveGapicGeneration.
+                 * @memberof google.api
+                 * @classdesc Represents a SelectiveGapicGeneration.
+                 * @implements ISelectiveGapicGeneration
+                 * @constructor
+                 * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set
+                 */
+                function SelectiveGapicGeneration(properties) {
+                    this.methods = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * SelectiveGapicGeneration methods.
+                 * @member {Array.<string>} methods
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 */
+                SelectiveGapicGeneration.prototype.methods = $util.emptyArray;
+    
+                /**
+                 * SelectiveGapicGeneration generateOmittedAsInternal.
+                 * @member {boolean} generateOmittedAsInternal
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 */
+                SelectiveGapicGeneration.prototype.generateOmittedAsInternal = false;
+    
+                /**
+                 * Creates a new SelectiveGapicGeneration instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration instance
+                 */
+                SelectiveGapicGeneration.create = function create(properties) {
+                    return new SelectiveGapicGeneration(properties);
+                };
+    
+                /**
+                 * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SelectiveGapicGeneration.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.methods != null && message.methods.length)
+                        for (var i = 0; i < message.methods.length; ++i)
+                            writer.uint32(/* id 1, wireType 2 =*/10).string(message.methods[i]);
+                    if (message.generateOmittedAsInternal != null && Object.hasOwnProperty.call(message, "generateOmittedAsInternal"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).bool(message.generateOmittedAsInternal);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SelectiveGapicGeneration.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SelectiveGapicGeneration.decode = function decode(reader, length, error, long) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.SelectiveGapicGeneration();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                if (!(message.methods && message.methods.length))
+                                    message.methods = [];
+                                message.methods.push(reader.string());
+                                break;
+                            }
+                        case 2: {
+                                message.generateOmittedAsInternal = reader.bool();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7, long);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SelectiveGapicGeneration.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a SelectiveGapicGeneration message.
+                 * @function verify
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                SelectiveGapicGeneration.verify = function verify(message, long) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
+                    if (message.methods != null && message.hasOwnProperty("methods")) {
+                        if (!Array.isArray(message.methods))
+                            return "methods: array expected";
+                        for (var i = 0; i < message.methods.length; ++i)
+                            if (!$util.isString(message.methods[i]))
+                                return "methods: string[] expected";
+                    }
+                    if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal"))
+                        if (typeof message.generateOmittedAsInternal !== "boolean")
+                            return "generateOmittedAsInternal: boolean expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 */
+                SelectiveGapicGeneration.fromObject = function fromObject(object, long) {
+                    if (object instanceof $root.google.api.SelectiveGapicGeneration)
+                        return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
+                    var message = new $root.google.api.SelectiveGapicGeneration();
+                    if (object.methods) {
+                        if (!Array.isArray(object.methods))
+                            throw TypeError(".google.api.SelectiveGapicGeneration.methods: array expected");
+                        message.methods = [];
+                        for (var i = 0; i < object.methods.length; ++i)
+                            message.methods[i] = String(object.methods[i]);
+                    }
+                    if (object.generateOmittedAsInternal != null)
+                        message.generateOmittedAsInternal = Boolean(object.generateOmittedAsInternal);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.SelectiveGapicGeneration} message SelectiveGapicGeneration
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                SelectiveGapicGeneration.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.methods = [];
+                    if (options.defaults)
+                        object.generateOmittedAsInternal = false;
+                    if (message.methods && message.methods.length) {
+                        object.methods = [];
+                        for (var j = 0; j < message.methods.length; ++j)
+                            object.methods[j] = message.methods[j];
+                    }
+                    if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal"))
+                        object.generateOmittedAsInternal = message.generateOmittedAsInternal;
+                    return object;
+                };
+    
+                /**
+                 * Converts this SelectiveGapicGeneration to JSON.
+                 * @function toJSON
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                SelectiveGapicGeneration.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for SelectiveGapicGeneration
+                 * @function getTypeUrl
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                SelectiveGapicGeneration.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.SelectiveGapicGeneration";
+                };
+    
+                return SelectiveGapicGeneration;
+            })();
+    
+            /**
+             * LaunchStage enum.
+             * @name google.api.LaunchStage
+             * @enum {number}
+             * @property {number} LAUNCH_STAGE_UNSPECIFIED=0 LAUNCH_STAGE_UNSPECIFIED value
+             * @property {number} UNIMPLEMENTED=6 UNIMPLEMENTED value
+             * @property {number} PRELAUNCH=7 PRELAUNCH value
+             * @property {number} EARLY_ACCESS=1 EARLY_ACCESS value
+             * @property {number} ALPHA=2 ALPHA value
+             * @property {number} BETA=3 BETA value
+             * @property {number} GA=4 GA value
+             * @property {number} DEPRECATED=5 DEPRECATED value
+             */
+            api.LaunchStage = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "LAUNCH_STAGE_UNSPECIFIED"] = 0;
+                values[valuesById[6] = "UNIMPLEMENTED"] = 6;
+                values[valuesById[7] = "PRELAUNCH"] = 7;
+                values[valuesById[1] = "EARLY_ACCESS"] = 1;
+                values[valuesById[2] = "ALPHA"] = 2;
                 values[valuesById[3] = "BETA"] = 3;
                 values[valuesById[4] = "GA"] = 4;
                 values[valuesById[5] = "DEPRECATED"] = 5;
@@ -11540,7 +12630,7 @@
                     this.file = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -11606,9 +12696,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorSet.decode = function decode(reader, length, error) {
+                FileDescriptorSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -11618,11 +12712,11 @@
                         case 1: {
                                 if (!(message.file && message.file.length))
                                     message.file = [];
-                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32()));
+                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -11653,14 +12747,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorSet.verify = function verify(message) {
+                FileDescriptorSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.file != null && message.hasOwnProperty("file")) {
                         if (!Array.isArray(message.file))
                             return "file: array expected";
                         for (var i = 0; i < message.file.length; ++i) {
-                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]);
+                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i], long + 1);
                             if (error)
                                 return "file." + error;
                         }
@@ -11676,9 +12774,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet
                  */
-                FileDescriptorSet.fromObject = function fromObject(object) {
+                FileDescriptorSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorSet();
                     if (object.file) {
                         if (!Array.isArray(object.file))
@@ -11687,7 +12789,7 @@
                         for (var i = 0; i < object.file.length; ++i) {
                             if (typeof object.file[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected");
-                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]);
+                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i], long + 1);
                         }
                     }
                     return message;
@@ -11750,6 +12852,7 @@
              * @name google.protobuf.Edition
              * @enum {number}
              * @property {number} EDITION_UNKNOWN=0 EDITION_UNKNOWN value
+             * @property {number} EDITION_LEGACY=900 EDITION_LEGACY value
              * @property {number} EDITION_PROTO2=998 EDITION_PROTO2 value
              * @property {number} EDITION_PROTO3=999 EDITION_PROTO3 value
              * @property {number} EDITION_2023=1000 EDITION_2023 value
@@ -11764,6 +12867,7 @@
             protobuf.Edition = (function() {
                 var valuesById = {}, values = Object.create(valuesById);
                 values[valuesById[0] = "EDITION_UNKNOWN"] = 0;
+                values[valuesById[900] = "EDITION_LEGACY"] = 900;
                 values[valuesById[998] = "EDITION_PROTO2"] = 998;
                 values[valuesById[999] = "EDITION_PROTO3"] = 999;
                 values[valuesById[1000] = "EDITION_2023"] = 1000;
@@ -11788,6 +12892,7 @@
                  * @property {Array.<string>|null} [dependency] FileDescriptorProto dependency
                  * @property {Array.<number>|null} [publicDependency] FileDescriptorProto publicDependency
                  * @property {Array.<number>|null} [weakDependency] FileDescriptorProto weakDependency
+                 * @property {Array.<string>|null} [optionDependency] FileDescriptorProto optionDependency
                  * @property {Array.<google.protobuf.IDescriptorProto>|null} [messageType] FileDescriptorProto messageType
                  * @property {Array.<google.protobuf.IEnumDescriptorProto>|null} [enumType] FileDescriptorProto enumType
                  * @property {Array.<google.protobuf.IServiceDescriptorProto>|null} [service] FileDescriptorProto service
@@ -11810,13 +12915,14 @@
                     this.dependency = [];
                     this.publicDependency = [];
                     this.weakDependency = [];
+                    this.optionDependency = [];
                     this.messageType = [];
                     this.enumType = [];
                     this.service = [];
                     this.extension = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -11860,6 +12966,14 @@
                  */
                 FileDescriptorProto.prototype.weakDependency = $util.emptyArray;
     
+                /**
+                 * FileDescriptorProto optionDependency.
+                 * @member {Array.<string>} optionDependency
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.optionDependency = $util.emptyArray;
+    
                 /**
                  * FileDescriptorProto messageType.
                  * @member {Array.<google.protobuf.IDescriptorProto>} messageType
@@ -11981,6 +13095,9 @@
                         writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax);
                     if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
                         writer.uint32(/* id 14, wireType 0 =*/112).int32(message.edition);
+                    if (message.optionDependency != null && message.optionDependency.length)
+                        for (var i = 0; i < message.optionDependency.length; ++i)
+                            writer.uint32(/* id 15, wireType 2 =*/122).string(message.optionDependency[i]);
                     return writer;
                 };
     
@@ -12008,9 +13125,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorProto.decode = function decode(reader, length, error) {
+                FileDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -12053,36 +13174,42 @@
                                     message.weakDependency.push(reader.int32());
                                 break;
                             }
+                        case 15: {
+                                if (!(message.optionDependency && message.optionDependency.length))
+                                    message.optionDependency = [];
+                                message.optionDependency.push(reader.string());
+                                break;
+                            }
                         case 4: {
                                 if (!(message.messageType && message.messageType.length))
                                     message.messageType = [];
-                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.service && message.service.length))
                                     message.service = [];
-                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32()));
+                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
-                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32());
+                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 12: {
@@ -12094,7 +13221,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -12125,9 +13252,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorProto.verify = function verify(message) {
+                FileDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -12155,11 +13286,18 @@
                             if (!$util.isInteger(message.weakDependency[i]))
                                 return "weakDependency: integer[] expected";
                     }
+                    if (message.optionDependency != null && message.hasOwnProperty("optionDependency")) {
+                        if (!Array.isArray(message.optionDependency))
+                            return "optionDependency: array expected";
+                        for (var i = 0; i < message.optionDependency.length; ++i)
+                            if (!$util.isString(message.optionDependency[i]))
+                                return "optionDependency: string[] expected";
+                    }
                     if (message.messageType != null && message.hasOwnProperty("messageType")) {
                         if (!Array.isArray(message.messageType))
                             return "messageType: array expected";
                         for (var i = 0; i < message.messageType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i], long + 1);
                             if (error)
                                 return "messageType." + error;
                         }
@@ -12168,7 +13306,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -12177,7 +13315,7 @@
                         if (!Array.isArray(message.service))
                             return "service: array expected";
                         for (var i = 0; i < message.service.length; ++i) {
-                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]);
+                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i], long + 1);
                             if (error)
                                 return "service." + error;
                         }
@@ -12186,18 +13324,18 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FileOptions.verify(message.options);
+                        var error = $root.google.protobuf.FileOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
                     if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) {
-                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo);
+                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo, long + 1);
                         if (error)
                             return "sourceCodeInfo." + error;
                     }
@@ -12209,6 +13347,7 @@
                         default:
                             return "edition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -12232,9 +13371,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto
                  */
-                FileDescriptorProto.fromObject = function fromObject(object) {
+                FileDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -12261,6 +13404,13 @@
                         for (var i = 0; i < object.weakDependency.length; ++i)
                             message.weakDependency[i] = object.weakDependency[i] | 0;
                     }
+                    if (object.optionDependency) {
+                        if (!Array.isArray(object.optionDependency))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.optionDependency: array expected");
+                        message.optionDependency = [];
+                        for (var i = 0; i < object.optionDependency.length; ++i)
+                            message.optionDependency[i] = String(object.optionDependency[i]);
+                    }
                     if (object.messageType) {
                         if (!Array.isArray(object.messageType))
                             throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected");
@@ -12268,7 +13418,7 @@
                         for (var i = 0; i < object.messageType.length; ++i) {
                             if (typeof object.messageType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected");
-                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]);
+                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -12278,7 +13428,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.service) {
@@ -12288,7 +13438,7 @@
                         for (var i = 0; i < object.service.length; ++i) {
                             if (typeof object.service[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected");
-                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]);
+                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -12298,18 +13448,18 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options, long + 1);
                     }
                     if (object.sourceCodeInfo != null) {
                         if (typeof object.sourceCodeInfo !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected");
-                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo);
+                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo, long + 1);
                     }
                     if (object.syntax != null)
                         message.syntax = String(object.syntax);
@@ -12324,6 +13474,10 @@
                     case 0:
                         message.edition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.edition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.edition = 998;
@@ -12389,6 +13543,7 @@
                         object.extension = [];
                         object.publicDependency = [];
                         object.weakDependency = [];
+                        object.optionDependency = [];
                     }
                     if (options.defaults) {
                         object.name = "";
@@ -12445,6 +13600,11 @@
                         object.syntax = message.syntax;
                     if (message.edition != null && message.hasOwnProperty("edition"))
                         object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                    if (message.optionDependency && message.optionDependency.length) {
+                        object.optionDependency = [];
+                        for (var j = 0; j < message.optionDependency.length; ++j)
+                            object.optionDependency[j] = message.optionDependency[j];
+                    }
                     return object;
                 };
     
@@ -12493,6 +13653,7 @@
                  * @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options
                  * @property {Array.<google.protobuf.DescriptorProto.IReservedRange>|null} [reservedRange] DescriptorProto reservedRange
                  * @property {Array.<string>|null} [reservedName] DescriptorProto reservedName
+                 * @property {google.protobuf.SymbolVisibility|null} [visibility] DescriptorProto visibility
                  */
     
                 /**
@@ -12514,7 +13675,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -12598,6 +13759,14 @@
                  */
                 DescriptorProto.prototype.reservedName = $util.emptyArray;
     
+                /**
+                 * DescriptorProto visibility.
+                 * @member {google.protobuf.SymbolVisibility} visibility
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.visibility = 0;
+    
                 /**
                  * Creates a new DescriptorProto instance using the specified properties.
                  * @function create
@@ -12650,6 +13819,8 @@
                     if (message.reservedName != null && message.reservedName.length)
                         for (var i = 0; i < message.reservedName.length; ++i)
                             writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]);
+                    if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility"))
+                        writer.uint32(/* id 11, wireType 0 =*/88).int32(message.visibility);
                     return writer;
                 };
     
@@ -12677,9 +13848,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DescriptorProto.decode = function decode(reader, length, error) {
+                DescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -12693,47 +13868,47 @@
                         case 2: {
                                 if (!(message.field && message.field.length))
                                     message.field = [];
-                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
                                 if (!(message.nestedType && message.nestedType.length))
                                     message.nestedType = [];
-                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.extensionRange && message.extensionRange.length))
                                     message.extensionRange = [];
-                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32()));
+                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
                                 if (!(message.oneofDecl && message.oneofDecl.length))
                                     message.oneofDecl = [];
-                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32()));
+                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
-                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 10: {
@@ -12742,8 +13917,12 @@
                                 message.reservedName.push(reader.string());
                                 break;
                             }
+                        case 11: {
+                                message.visibility = reader.int32();
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -12774,9 +13953,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DescriptorProto.verify = function verify(message) {
+                DescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -12784,7 +13967,7 @@
                         if (!Array.isArray(message.field))
                             return "field: array expected";
                         for (var i = 0; i < message.field.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i], long + 1);
                             if (error)
                                 return "field." + error;
                         }
@@ -12793,7 +13976,7 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
@@ -12802,7 +13985,7 @@
                         if (!Array.isArray(message.nestedType))
                             return "nestedType: array expected";
                         for (var i = 0; i < message.nestedType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i], long + 1);
                             if (error)
                                 return "nestedType." + error;
                         }
@@ -12811,7 +13994,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -12820,7 +14003,7 @@
                         if (!Array.isArray(message.extensionRange))
                             return "extensionRange: array expected";
                         for (var i = 0; i < message.extensionRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i], long + 1);
                             if (error)
                                 return "extensionRange." + error;
                         }
@@ -12829,13 +14012,13 @@
                         if (!Array.isArray(message.oneofDecl))
                             return "oneofDecl: array expected";
                         for (var i = 0; i < message.oneofDecl.length; ++i) {
-                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]);
+                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i], long + 1);
                             if (error)
                                 return "oneofDecl." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MessageOptions.verify(message.options);
+                        var error = $root.google.protobuf.MessageOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -12843,7 +14026,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -12855,6 +14038,15 @@
                             if (!$util.isString(message.reservedName[i]))
                                 return "reservedName: string[] expected";
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        switch (message.visibility) {
+                        default:
+                            return "visibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
                     return null;
                 };
     
@@ -12866,9 +14058,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.DescriptorProto} DescriptorProto
                  */
-                DescriptorProto.fromObject = function fromObject(object) {
+                DescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.DescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.DescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -12879,7 +14075,7 @@
                         for (var i = 0; i < object.field.length; ++i) {
                             if (typeof object.field[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.field: object expected");
-                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]);
+                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -12889,7 +14085,7 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.nestedType) {
@@ -12899,7 +14095,7 @@
                         for (var i = 0; i < object.nestedType.length; ++i) {
                             if (typeof object.nestedType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected");
-                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]);
+                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -12909,7 +14105,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.extensionRange) {
@@ -12919,7 +14115,7 @@
                         for (var i = 0; i < object.extensionRange.length; ++i) {
                             if (typeof object.extensionRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected");
-                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]);
+                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i], long + 1);
                         }
                     }
                     if (object.oneofDecl) {
@@ -12929,13 +14125,13 @@
                         for (var i = 0; i < object.oneofDecl.length; ++i) {
                             if (typeof object.oneofDecl[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected");
-                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]);
+                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.DescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -12944,7 +14140,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -12954,6 +14150,26 @@
                         for (var i = 0; i < object.reservedName.length; ++i)
                             message.reservedName[i] = String(object.reservedName[i]);
                     }
+                    switch (object.visibility) {
+                    default:
+                        if (typeof object.visibility === "number") {
+                            message.visibility = object.visibility;
+                            break;
+                        }
+                        break;
+                    case "VISIBILITY_UNSET":
+                    case 0:
+                        message.visibility = 0;
+                        break;
+                    case "VISIBILITY_LOCAL":
+                    case 1:
+                        message.visibility = 1;
+                        break;
+                    case "VISIBILITY_EXPORT":
+                    case 2:
+                        message.visibility = 2;
+                        break;
+                    }
                     return message;
                 };
     
@@ -12983,6 +14199,7 @@
                     if (options.defaults) {
                         object.name = "";
                         object.options = null;
+                        object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0;
                     }
                     if (message.name != null && message.hasOwnProperty("name"))
                         object.name = message.name;
@@ -13028,6 +14245,8 @@
                         for (var j = 0; j < message.reservedName.length; ++j)
                             object.reservedName[j] = message.reservedName[j];
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility;
                     return object;
                 };
     
@@ -13079,7 +14298,7 @@
                     function ExtensionRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -13164,9 +14383,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ExtensionRange.decode = function decode(reader, length, error) {
+                    ExtensionRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -13182,11 +14405,11 @@
                                     break;
                                 }
                             case 3: {
-                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32());
+                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -13217,9 +14440,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ExtensionRange.verify = function verify(message) {
+                    ExtensionRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -13227,7 +14454,7 @@
                             if (!$util.isInteger(message.end))
                                 return "end: integer expected";
                         if (message.options != null && message.hasOwnProperty("options")) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options, long + 1);
                             if (error)
                                 return "options." + error;
                         }
@@ -13242,9 +14469,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange
                      */
-                    ExtensionRange.fromObject = function fromObject(object) {
+                    ExtensionRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -13253,7 +14484,7 @@
                         if (object.options != null) {
                             if (typeof object.options !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected");
-                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options);
+                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options, long + 1);
                         }
                         return message;
                     };
@@ -13335,7 +14566,7 @@
                     function ReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -13410,9 +14641,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ReservedRange.decode = function decode(reader, length, error) {
+                    ReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -13428,7 +14663,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -13459,9 +14694,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ReservedRange.verify = function verify(message) {
+                    ReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -13479,9 +14718,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange
                      */
-                    ReservedRange.fromObject = function fromObject(object) {
+                    ReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -13571,7 +14814,7 @@
                     this.declaration = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -13668,9 +14911,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ExtensionRangeOptions.decode = function decode(reader, length, error) {
+                ExtensionRangeOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -13680,17 +14927,17 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
                                 if (!(message.declaration && message.declaration.length))
                                     message.declaration = [];
-                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32()));
+                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -13698,7 +14945,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -13729,14 +14976,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ExtensionRangeOptions.verify = function verify(message) {
+                ExtensionRangeOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -13745,13 +14996,13 @@
                         if (!Array.isArray(message.declaration))
                             return "declaration: array expected";
                         for (var i = 0; i < message.declaration.length; ++i) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i]);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i], long + 1);
                             if (error)
                                 return "declaration." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -13774,9 +15025,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions
                  */
-                ExtensionRangeOptions.fromObject = function fromObject(object) {
+                ExtensionRangeOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ExtensionRangeOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ExtensionRangeOptions();
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -13785,7 +15040,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object.declaration) {
@@ -13795,13 +15050,13 @@
                         for (var i = 0; i < object.declaration.length; ++i) {
                             if (typeof object.declaration[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: object expected");
-                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i]);
+                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ExtensionRangeOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     switch (object.verification) {
                     case "DECLARATION":
@@ -13910,7 +15165,7 @@
                     function Declaration(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -14015,9 +15270,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Declaration.decode = function decode(reader, length, error) {
+                    Declaration.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -14045,7 +15304,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -14076,9 +15335,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Declaration.verify = function verify(message) {
+                    Declaration.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.number != null && message.hasOwnProperty("number"))
                             if (!$util.isInteger(message.number))
                                 return "number: integer expected";
@@ -14105,9 +15368,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration
                      */
-                    Declaration.fromObject = function fromObject(object) {
+                    Declaration.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.ExtensionRangeOptions.Declaration)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         if (object.number != null)
                             message.number = object.number | 0;
@@ -14231,7 +15498,7 @@
                 function FieldDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14396,9 +15663,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldDescriptorProto.decode = function decode(reader, length, error) {
+                FieldDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14442,7 +15713,7 @@
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 17: {
@@ -14450,7 +15721,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14481,9 +15752,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldDescriptorProto.verify = function verify(message) {
+                FieldDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -14539,7 +15814,7 @@
                         if (!$util.isString(message.jsonName))
                             return "jsonName: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FieldOptions.verify(message.options);
+                        var error = $root.google.protobuf.FieldOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -14557,9 +15832,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto
                  */
-                FieldDescriptorProto.fromObject = function fromObject(object) {
+                FieldDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -14678,7 +15957,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options, long + 1);
                     }
                     if (object.proto3Optional != null)
                         message.proto3Optional = Boolean(object.proto3Optional);
@@ -14848,7 +16127,7 @@
                 function OneofDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14923,9 +16202,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofDescriptorProto.decode = function decode(reader, length, error) {
+                OneofDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14937,11 +16220,11 @@
                                 break;
                             }
                         case 2: {
-                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14972,14 +16255,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofDescriptorProto.verify = function verify(message) {
+                OneofDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.OneofOptions.verify(message.options);
+                        var error = $root.google.protobuf.OneofOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -14994,16 +16281,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto
                  */
-                OneofDescriptorProto.fromObject = function fromObject(object) {
+                OneofDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -15072,6 +16363,7 @@
                  * @property {google.protobuf.IEnumOptions|null} [options] EnumDescriptorProto options
                  * @property {Array.<google.protobuf.EnumDescriptorProto.IEnumReservedRange>|null} [reservedRange] EnumDescriptorProto reservedRange
                  * @property {Array.<string>|null} [reservedName] EnumDescriptorProto reservedName
+                 * @property {google.protobuf.SymbolVisibility|null} [visibility] EnumDescriptorProto visibility
                  */
     
                 /**
@@ -15088,7 +16380,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -15132,6 +16424,14 @@
                  */
                 EnumDescriptorProto.prototype.reservedName = $util.emptyArray;
     
+                /**
+                 * EnumDescriptorProto visibility.
+                 * @member {google.protobuf.SymbolVisibility} visibility
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 */
+                EnumDescriptorProto.prototype.visibility = 0;
+    
                 /**
                  * Creates a new EnumDescriptorProto instance using the specified properties.
                  * @function create
@@ -15169,6 +16469,8 @@
                     if (message.reservedName != null && message.reservedName.length)
                         for (var i = 0; i < message.reservedName.length; ++i)
                             writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]);
+                    if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility"))
+                        writer.uint32(/* id 6, wireType 0 =*/48).int32(message.visibility);
                     return writer;
                 };
     
@@ -15196,9 +16498,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumDescriptorProto.decode = function decode(reader, length, error) {
+                EnumDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15212,17 +16518,17 @@
                         case 2: {
                                 if (!(message.value && message.value.length))
                                     message.value = [];
-                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32()));
+                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 4: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
@@ -15231,8 +16537,12 @@
                                 message.reservedName.push(reader.string());
                                 break;
                             }
+                        case 6: {
+                                message.visibility = reader.int32();
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -15263,9 +16573,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumDescriptorProto.verify = function verify(message) {
+                EnumDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -15273,13 +16587,13 @@
                         if (!Array.isArray(message.value))
                             return "value: array expected";
                         for (var i = 0; i < message.value.length; ++i) {
-                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]);
+                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i], long + 1);
                             if (error)
                                 return "value." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -15287,7 +16601,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -15299,6 +16613,15 @@
                             if (!$util.isString(message.reservedName[i]))
                                 return "reservedName: string[] expected";
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        switch (message.visibility) {
+                        default:
+                            return "visibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
                     return null;
                 };
     
@@ -15310,9 +16633,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto
                  */
-                EnumDescriptorProto.fromObject = function fromObject(object) {
+                EnumDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -15323,13 +16650,13 @@
                         for (var i = 0; i < object.value.length; ++i) {
                             if (typeof object.value[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected");
-                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]);
+                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -15338,7 +16665,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -15348,6 +16675,26 @@
                         for (var i = 0; i < object.reservedName.length; ++i)
                             message.reservedName[i] = String(object.reservedName[i]);
                     }
+                    switch (object.visibility) {
+                    default:
+                        if (typeof object.visibility === "number") {
+                            message.visibility = object.visibility;
+                            break;
+                        }
+                        break;
+                    case "VISIBILITY_UNSET":
+                    case 0:
+                        message.visibility = 0;
+                        break;
+                    case "VISIBILITY_LOCAL":
+                    case 1:
+                        message.visibility = 1;
+                        break;
+                    case "VISIBILITY_EXPORT":
+                    case 2:
+                        message.visibility = 2;
+                        break;
+                    }
                     return message;
                 };
     
@@ -15372,6 +16719,7 @@
                     if (options.defaults) {
                         object.name = "";
                         object.options = null;
+                        object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0;
                     }
                     if (message.name != null && message.hasOwnProperty("name"))
                         object.name = message.name;
@@ -15392,6 +16740,8 @@
                         for (var j = 0; j < message.reservedName.length; ++j)
                             object.reservedName[j] = message.reservedName[j];
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility;
                     return object;
                 };
     
@@ -15442,7 +16792,7 @@
                     function EnumReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -15517,9 +16867,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EnumReservedRange.decode = function decode(reader, length, error) {
+                    EnumReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -15535,7 +16889,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -15566,9 +16920,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EnumReservedRange.verify = function verify(message) {
+                    EnumReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -15586,9 +16944,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange
                      */
-                    EnumReservedRange.fromObject = function fromObject(object) {
+                    EnumReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -15675,7 +17037,7 @@
                 function EnumValueDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -15760,9 +17122,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueDescriptorProto.decode = function decode(reader, length, error) {
+                EnumValueDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15778,11 +17144,11 @@
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -15813,9 +17179,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueDescriptorProto.verify = function verify(message) {
+                EnumValueDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -15823,7 +17193,7 @@
                         if (!$util.isInteger(message.number))
                             return "number: integer expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -15838,9 +17208,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto
                  */
-                EnumValueDescriptorProto.fromObject = function fromObject(object) {
+                EnumValueDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -15849,7 +17223,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -15933,7 +17307,7 @@
                     this.method = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16019,9 +17393,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceDescriptorProto.decode = function decode(reader, length, error) {
+                ServiceDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16035,15 +17413,15 @@
                         case 2: {
                                 if (!(message.method && message.method.length))
                                     message.method = [];
-                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32()));
+                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16074,9 +17452,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceDescriptorProto.verify = function verify(message) {
+                ServiceDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -16084,13 +17466,13 @@
                         if (!Array.isArray(message.method))
                             return "method: array expected";
                         for (var i = 0; i < message.method.length; ++i) {
-                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]);
+                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i], long + 1);
                             if (error)
                                 return "method." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.ServiceOptions.verify(message.options);
+                        var error = $root.google.protobuf.ServiceOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -16105,9 +17487,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto
                  */
-                ServiceDescriptorProto.fromObject = function fromObject(object) {
+                ServiceDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -16118,13 +17504,13 @@
                         for (var i = 0; i < object.method.length; ++i) {
                             if (typeof object.method[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected");
-                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]);
+                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -16214,7 +17600,7 @@
                 function MethodDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16329,9 +17715,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodDescriptorProto.decode = function decode(reader, length, error) {
+                MethodDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16351,7 +17741,7 @@
                                 break;
                             }
                         case 4: {
-                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 5: {
@@ -16363,7 +17753,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16394,9 +17784,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodDescriptorProto.verify = function verify(message) {
+                MethodDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -16407,7 +17801,7 @@
                         if (!$util.isString(message.outputType))
                             return "outputType: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MethodOptions.verify(message.options);
+                        var error = $root.google.protobuf.MethodOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -16428,9 +17822,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto
                  */
-                MethodDescriptorProto.fromObject = function fromObject(object) {
+                MethodDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -16441,7 +17839,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options, long + 1);
                     }
                     if (object.clientStreaming != null)
                         message.clientStreaming = Boolean(object.clientStreaming);
@@ -16558,7 +17956,7 @@
                     this[".google.api.resourceDefinition"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16835,9 +18233,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileOptions.decode = function decode(reader, length, error) {
+                FileOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16921,23 +18323,23 @@
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
                                 if (!(message[".google.api.resourceDefinition"] && message[".google.api.resourceDefinition"].length))
                                     message[".google.api.resourceDefinition"] = [];
-                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32()));
+                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16968,9 +18370,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileOptions.verify = function verify(message) {
+                FileOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.javaPackage != null && message.hasOwnProperty("javaPackage"))
                         if (!$util.isString(message.javaPackage))
                             return "javaPackage: string expected";
@@ -17035,7 +18441,7 @@
                         if (!$util.isString(message.rubyPackage))
                             return "rubyPackage: string expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -17043,7 +18449,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -17052,7 +18458,7 @@
                         if (!Array.isArray(message[".google.api.resourceDefinition"]))
                             return ".google.api.resourceDefinition: array expected";
                         for (var i = 0; i < message[".google.api.resourceDefinition"].length; ++i) {
-                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i]);
+                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i], long + 1);
                             if (error)
                                 return ".google.api.resourceDefinition." + error;
                         }
@@ -17068,9 +18474,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileOptions} FileOptions
                  */
-                FileOptions.fromObject = function fromObject(object) {
+                FileOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileOptions();
                     if (object.javaPackage != null)
                         message.javaPackage = String(object.javaPackage);
@@ -17131,7 +18541,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FileOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -17140,7 +18550,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resourceDefinition"]) {
@@ -17150,7 +18560,7 @@
                         for (var i = 0; i < object[".google.api.resourceDefinition"].length; ++i) {
                             if (typeof object[".google.api.resourceDefinition"][i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions..google.api.resourceDefinition: object expected");
-                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i]);
+                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i], long + 1);
                         }
                     }
                     return message;
@@ -17321,7 +18731,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17457,9 +18867,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MessageOptions.decode = function decode(reader, length, error) {
+                MessageOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17487,21 +18901,21 @@
                                 break;
                             }
                         case 12: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
-                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32());
+                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17532,9 +18946,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MessageOptions.verify = function verify(message) {
+                MessageOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat"))
                         if (typeof message.messageSetWireFormat !== "boolean")
                             return "messageSetWireFormat: boolean expected";
@@ -17551,7 +18969,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -17559,13 +18977,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.resource"] != null && message.hasOwnProperty(".google.api.resource")) {
-                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"]);
+                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"], long + 1);
                         if (error)
                             return ".google.api.resource." + error;
                     }
@@ -17580,9 +18998,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MessageOptions} MessageOptions
                  */
-                MessageOptions.fromObject = function fromObject(object) {
+                MessageOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MessageOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MessageOptions();
                     if (object.messageSetWireFormat != null)
                         message.messageSetWireFormat = Boolean(object.messageSetWireFormat);
@@ -17597,7 +19019,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MessageOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -17606,13 +19028,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resource"] != null) {
                         if (typeof object[".google.api.resource"] !== "object")
                             throw TypeError(".google.protobuf.MessageOptions..google.api.resource: object expected");
-                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"]);
+                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"], long + 1);
                     }
                     return message;
                 };
@@ -17710,6 +19132,7 @@
                  * @property {Array.<google.protobuf.FieldOptions.OptionTargetType>|null} [targets] FieldOptions targets
                  * @property {Array.<google.protobuf.FieldOptions.IEditionDefault>|null} [editionDefaults] FieldOptions editionDefaults
                  * @property {google.protobuf.IFeatureSet|null} [features] FieldOptions features
+                 * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] FieldOptions featureSupport
                  * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] FieldOptions uninterpretedOption
                  * @property {Array.<google.api.FieldBehavior>|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior
                  * @property {google.api.IResourceReference|null} [".google.api.resourceReference"] FieldOptions .google.api.resourceReference
@@ -17730,7 +19153,7 @@
                     this[".google.api.fieldBehavior"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17830,6 +19253,14 @@
                  */
                 FieldOptions.prototype.features = null;
     
+                /**
+                 * FieldOptions featureSupport.
+                 * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.featureSupport = null;
+    
                 /**
                  * FieldOptions uninterpretedOption.
                  * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
@@ -17904,6 +19335,8 @@
                             $root.google.protobuf.FieldOptions.EditionDefault.encode(message.editionDefaults[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();
                     if (message.features != null && Object.hasOwnProperty.call(message, "features"))
                         $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();
+                    if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport"))
+                        $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();
                     if (message.uninterpretedOption != null && message.uninterpretedOption.length)
                         for (var i = 0; i < message.uninterpretedOption.length; ++i)
                             $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
@@ -17939,9 +19372,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldOptions.decode = function decode(reader, length, error) {
+                FieldOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17998,17 +19435,21 @@
                         case 20: {
                                 if (!(message.editionDefaults && message.editionDefaults.length))
                                     message.editionDefaults = [];
-                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32()));
+                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 21: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
+                        case 22: {
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1052: {
@@ -18023,11 +19464,11 @@
                                 break;
                             }
                         case 1055: {
-                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32());
+                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -18058,9 +19499,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldOptions.verify = function verify(message) {
+                FieldOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
                         switch (message.ctype) {
                         default:
@@ -18130,21 +19575,26 @@
                         if (!Array.isArray(message.editionDefaults))
                             return "editionDefaults: array expected";
                         for (var i = 0; i < message.editionDefaults.length; ++i) {
-                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i]);
+                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i], long + 1);
                             if (error)
                                 return "editionDefaults." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
+                        if (error)
+                            return "featureSupport." + error;
+                    }
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -18169,7 +19619,7 @@
                             }
                     }
                     if (message[".google.api.resourceReference"] != null && message.hasOwnProperty(".google.api.resourceReference")) {
-                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"]);
+                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"], long + 1);
                         if (error)
                             return ".google.api.resourceReference." + error;
                     }
@@ -18184,9 +19634,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldOptions} FieldOptions
                  */
-                FieldOptions.fromObject = function fromObject(object) {
+                FieldOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldOptions();
                     switch (object.ctype) {
                     default:
@@ -18320,13 +19774,18 @@
                         for (var i = 0; i < object.editionDefaults.length; ++i) {
                             if (typeof object.editionDefaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.editionDefaults: object expected");
-                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i]);
+                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FieldOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
+                    }
+                    if (object.featureSupport != null) {
+                        if (typeof object.featureSupport !== "object")
+                            throw TypeError(".google.protobuf.FieldOptions.featureSupport: object expected");
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -18335,7 +19794,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.fieldBehavior"]) {
@@ -18390,7 +19849,7 @@
                     if (object[".google.api.resourceReference"] != null) {
                         if (typeof object[".google.api.resourceReference"] !== "object")
                             throw TypeError(".google.protobuf.FieldOptions..google.api.resourceReference: object expected");
-                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"]);
+                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"], long + 1);
                     }
                     return message;
                 };
@@ -18425,6 +19884,7 @@
                         object.debugRedact = false;
                         object.retention = options.enums === String ? "RETENTION_UNKNOWN" : 0;
                         object.features = null;
+                        object.featureSupport = null;
                         object[".google.api.resourceReference"] = null;
                     }
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
@@ -18457,6 +19917,8 @@
                     }
                     if (message.features != null && message.hasOwnProperty("features"))
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport"))
+                        object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
                         object.uninterpretedOption = [];
                         for (var j = 0; j < message.uninterpretedOption.length; ++j)
@@ -18597,7 +20059,7 @@
                     function EditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -18672,9 +20134,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EditionDefault.decode = function decode(reader, length, error) {
+                    EditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -18690,7 +20156,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -18721,14 +20187,19 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EditionDefault.verify = function verify(message) {
+                    EditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
                                 return "edition: enum value expected";
                             case 0:
+                            case 900:
                             case 998:
                             case 999:
                             case 1000:
@@ -18755,9 +20226,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault
                      */
-                    EditionDefault.fromObject = function fromObject(object) {
+                    EditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         switch (object.edition) {
                         default:
@@ -18768,105 +20243,603 @@
                             break;
                         case "EDITION_UNKNOWN":
                         case 0:
-                            message.edition = 0;
+                            message.edition = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.edition = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.edition = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.edition = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.edition = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.edition = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.edition = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.edition = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.edition = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.edition = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.edition = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.edition = 2147483647;
+                            break;
+                        }
+                        if (object.value != null)
+                            message.value = String(object.value);
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an EditionDefault message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {google.protobuf.FieldOptions.EditionDefault} message EditionDefault
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    EditionDefault.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.value = "";
+                            object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                        }
+                        if (message.value != null && message.hasOwnProperty("value"))
+                            object.value = message.value;
+                        if (message.edition != null && message.hasOwnProperty("edition"))
+                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this EditionDefault to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    EditionDefault.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for EditionDefault
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    EditionDefault.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FieldOptions.EditionDefault";
+                    };
+    
+                    return EditionDefault;
+                })();
+    
+                FieldOptions.FeatureSupport = (function() {
+    
+                    /**
+                     * Properties of a FeatureSupport.
+                     * @memberof google.protobuf.FieldOptions
+                     * @interface IFeatureSupport
+                     * @property {google.protobuf.Edition|null} [editionIntroduced] FeatureSupport editionIntroduced
+                     * @property {google.protobuf.Edition|null} [editionDeprecated] FeatureSupport editionDeprecated
+                     * @property {string|null} [deprecationWarning] FeatureSupport deprecationWarning
+                     * @property {google.protobuf.Edition|null} [editionRemoved] FeatureSupport editionRemoved
+                     */
+    
+                    /**
+                     * Constructs a new FeatureSupport.
+                     * @memberof google.protobuf.FieldOptions
+                     * @classdesc Represents a FeatureSupport.
+                     * @implements IFeatureSupport
+                     * @constructor
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set
+                     */
+                    function FeatureSupport(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * FeatureSupport editionIntroduced.
+                     * @member {google.protobuf.Edition} editionIntroduced
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionIntroduced = 0;
+    
+                    /**
+                     * FeatureSupport editionDeprecated.
+                     * @member {google.protobuf.Edition} editionDeprecated
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionDeprecated = 0;
+    
+                    /**
+                     * FeatureSupport deprecationWarning.
+                     * @member {string} deprecationWarning
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.deprecationWarning = "";
+    
+                    /**
+                     * FeatureSupport editionRemoved.
+                     * @member {google.protobuf.Edition} editionRemoved
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionRemoved = 0;
+    
+                    /**
+                     * Creates a new FeatureSupport instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport instance
+                     */
+                    FeatureSupport.create = function create(properties) {
+                        return new FeatureSupport(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSupport.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.editionIntroduced != null && Object.hasOwnProperty.call(message, "editionIntroduced"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.editionIntroduced);
+                        if (message.editionDeprecated != null && Object.hasOwnProperty.call(message, "editionDeprecated"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).int32(message.editionDeprecated);
+                        if (message.deprecationWarning != null && Object.hasOwnProperty.call(message, "deprecationWarning"))
+                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.deprecationWarning);
+                        if (message.editionRemoved != null && Object.hasOwnProperty.call(message, "editionRemoved"))
+                            writer.uint32(/* id 4, wireType 0 =*/32).int32(message.editionRemoved);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSupport.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a FeatureSupport message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSupport.decode = function decode(reader, length, error, long) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.FeatureSupport();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.editionIntroduced = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.editionDeprecated = reader.int32();
+                                    break;
+                                }
+                            case 3: {
+                                    message.deprecationWarning = reader.string();
+                                    break;
+                                }
+                            case 4: {
+                                    message.editionRemoved = reader.int32();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7, long);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSupport.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a FeatureSupport message.
+                     * @function verify
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    FeatureSupport.verify = function verify(message, long) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
+                        if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
+                            switch (message.editionIntroduced) {
+                            default:
+                                return "editionIntroduced: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated"))
+                            switch (message.editionDeprecated) {
+                            default:
+                                return "editionDeprecated: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning"))
+                            if (!$util.isString(message.deprecationWarning))
+                                return "deprecationWarning: string expected";
+                        if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved"))
+                            switch (message.editionRemoved) {
+                            default:
+                                return "editionRemoved: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     */
+                    FeatureSupport.fromObject = function fromObject(object, long) {
+                        if (object instanceof $root.google.protobuf.FieldOptions.FeatureSupport)
+                            return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var message = new $root.google.protobuf.FieldOptions.FeatureSupport();
+                        switch (object.editionIntroduced) {
+                        default:
+                            if (typeof object.editionIntroduced === "number") {
+                                message.editionIntroduced = object.editionIntroduced;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionIntroduced = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionIntroduced = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionIntroduced = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionIntroduced = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionIntroduced = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionIntroduced = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionIntroduced = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionIntroduced = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionIntroduced = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionIntroduced = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionIntroduced = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionIntroduced = 2147483647;
+                            break;
+                        }
+                        switch (object.editionDeprecated) {
+                        default:
+                            if (typeof object.editionDeprecated === "number") {
+                                message.editionDeprecated = object.editionDeprecated;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionDeprecated = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionDeprecated = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionDeprecated = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionDeprecated = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionDeprecated = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionDeprecated = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionDeprecated = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionDeprecated = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionDeprecated = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionDeprecated = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionDeprecated = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionDeprecated = 2147483647;
+                            break;
+                        }
+                        if (object.deprecationWarning != null)
+                            message.deprecationWarning = String(object.deprecationWarning);
+                        switch (object.editionRemoved) {
+                        default:
+                            if (typeof object.editionRemoved === "number") {
+                                message.editionRemoved = object.editionRemoved;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionRemoved = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionRemoved = 900;
                             break;
                         case "EDITION_PROTO2":
                         case 998:
-                            message.edition = 998;
+                            message.editionRemoved = 998;
                             break;
                         case "EDITION_PROTO3":
                         case 999:
-                            message.edition = 999;
+                            message.editionRemoved = 999;
                             break;
                         case "EDITION_2023":
                         case 1000:
-                            message.edition = 1000;
+                            message.editionRemoved = 1000;
                             break;
                         case "EDITION_2024":
                         case 1001:
-                            message.edition = 1001;
+                            message.editionRemoved = 1001;
                             break;
                         case "EDITION_1_TEST_ONLY":
                         case 1:
-                            message.edition = 1;
+                            message.editionRemoved = 1;
                             break;
                         case "EDITION_2_TEST_ONLY":
                         case 2:
-                            message.edition = 2;
+                            message.editionRemoved = 2;
                             break;
                         case "EDITION_99997_TEST_ONLY":
                         case 99997:
-                            message.edition = 99997;
+                            message.editionRemoved = 99997;
                             break;
                         case "EDITION_99998_TEST_ONLY":
                         case 99998:
-                            message.edition = 99998;
+                            message.editionRemoved = 99998;
                             break;
                         case "EDITION_99999_TEST_ONLY":
                         case 99999:
-                            message.edition = 99999;
+                            message.editionRemoved = 99999;
                             break;
                         case "EDITION_MAX":
                         case 2147483647:
-                            message.edition = 2147483647;
+                            message.editionRemoved = 2147483647;
                             break;
                         }
-                        if (object.value != null)
-                            message.value = String(object.value);
                         return message;
                     };
     
                     /**
-                     * Creates a plain object from an EditionDefault message. Also converts values to other types if specified.
+                     * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified.
                      * @function toObject
-                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
                      * @static
-                     * @param {google.protobuf.FieldOptions.EditionDefault} message EditionDefault
+                     * @param {google.protobuf.FieldOptions.FeatureSupport} message FeatureSupport
                      * @param {$protobuf.IConversionOptions} [options] Conversion options
                      * @returns {Object.<string,*>} Plain object
                      */
-                    EditionDefault.toObject = function toObject(message, options) {
+                    FeatureSupport.toObject = function toObject(message, options) {
                         if (!options)
                             options = {};
                         var object = {};
                         if (options.defaults) {
-                            object.value = "";
-                            object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.editionIntroduced = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.editionDeprecated = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.deprecationWarning = "";
+                            object.editionRemoved = options.enums === String ? "EDITION_UNKNOWN" : 0;
                         }
-                        if (message.value != null && message.hasOwnProperty("value"))
-                            object.value = message.value;
-                        if (message.edition != null && message.hasOwnProperty("edition"))
-                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
+                            object.editionIntroduced = options.enums === String ? $root.google.protobuf.Edition[message.editionIntroduced] === undefined ? message.editionIntroduced : $root.google.protobuf.Edition[message.editionIntroduced] : message.editionIntroduced;
+                        if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated"))
+                            object.editionDeprecated = options.enums === String ? $root.google.protobuf.Edition[message.editionDeprecated] === undefined ? message.editionDeprecated : $root.google.protobuf.Edition[message.editionDeprecated] : message.editionDeprecated;
+                        if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning"))
+                            object.deprecationWarning = message.deprecationWarning;
+                        if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved"))
+                            object.editionRemoved = options.enums === String ? $root.google.protobuf.Edition[message.editionRemoved] === undefined ? message.editionRemoved : $root.google.protobuf.Edition[message.editionRemoved] : message.editionRemoved;
                         return object;
                     };
     
                     /**
-                     * Converts this EditionDefault to JSON.
+                     * Converts this FeatureSupport to JSON.
                      * @function toJSON
-                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
                      * @instance
                      * @returns {Object.<string,*>} JSON object
                      */
-                    EditionDefault.prototype.toJSON = function toJSON() {
+                    FeatureSupport.prototype.toJSON = function toJSON() {
                         return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                     };
     
                     /**
-                     * Gets the default type url for EditionDefault
+                     * Gets the default type url for FeatureSupport
                      * @function getTypeUrl
-                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
                      * @static
                      * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                      * @returns {string} The default type url
                      */
-                    EditionDefault.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    FeatureSupport.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                         if (typeUrlPrefix === undefined) {
                             typeUrlPrefix = "type.googleapis.com";
                         }
-                        return typeUrlPrefix + "/google.protobuf.FieldOptions.EditionDefault";
+                        return typeUrlPrefix + "/google.protobuf.FieldOptions.FeatureSupport";
                     };
     
-                    return EditionDefault;
+                    return FeatureSupport;
                 })();
     
                 return FieldOptions;
@@ -18894,7 +20867,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -18970,9 +20943,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofOptions.decode = function decode(reader, length, error) {
+                OneofOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -18980,17 +20957,17 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19021,11 +20998,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofOptions.verify = function verify(message) {
+                OneofOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -19033,7 +21014,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -19049,14 +21030,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofOptions} OneofOptions
                  */
-                OneofOptions.fromObject = function fromObject(object) {
+                OneofOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.OneofOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -19065,7 +21050,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -19152,7 +21137,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -19258,9 +21243,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumOptions.decode = function decode(reader, length, error) {
+                EnumOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -19280,17 +21269,17 @@
                                 break;
                             }
                         case 7: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19321,9 +21310,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumOptions.verify = function verify(message) {
+                EnumOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.allowAlias != null && message.hasOwnProperty("allowAlias"))
                         if (typeof message.allowAlias !== "boolean")
                             return "allowAlias: boolean expected";
@@ -19334,7 +21327,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -19342,7 +21335,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -19358,9 +21351,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumOptions} EnumOptions
                  */
-                EnumOptions.fromObject = function fromObject(object) {
+                EnumOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumOptions();
                     if (object.allowAlias != null)
                         message.allowAlias = Boolean(object.allowAlias);
@@ -19371,7 +21368,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -19380,7 +21377,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -19461,6 +21458,7 @@
                  * @property {boolean|null} [deprecated] EnumValueOptions deprecated
                  * @property {google.protobuf.IFeatureSet|null} [features] EnumValueOptions features
                  * @property {boolean|null} [debugRedact] EnumValueOptions debugRedact
+                 * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] EnumValueOptions featureSupport
                  * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] EnumValueOptions uninterpretedOption
                  */
     
@@ -19476,7 +21474,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -19504,6 +21502,14 @@
                  */
                 EnumValueOptions.prototype.debugRedact = false;
     
+                /**
+                 * EnumValueOptions featureSupport.
+                 * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @instance
+                 */
+                EnumValueOptions.prototype.featureSupport = null;
+    
                 /**
                  * EnumValueOptions uninterpretedOption.
                  * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
@@ -19542,6 +21548,8 @@
                         $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                     if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact"))
                         writer.uint32(/* id 3, wireType 0 =*/24).bool(message.debugRedact);
+                    if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport"))
+                        $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
                     if (message.uninterpretedOption != null && message.uninterpretedOption.length)
                         for (var i = 0; i < message.uninterpretedOption.length; ++i)
                             $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
@@ -19572,9 +21580,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueOptions.decode = function decode(reader, length, error) {
+                EnumValueOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -19586,21 +21598,25 @@
                                 break;
                             }
                         case 2: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
                                 message.debugRedact = reader.bool();
                                 break;
                             }
+                        case 4: {
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19631,25 +21647,34 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueOptions.verify = function verify(message) {
+                EnumValueOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         if (typeof message.debugRedact !== "boolean")
                             return "debugRedact: boolean expected";
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
+                        if (error)
+                            return "featureSupport." + error;
+                    }
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -19665,19 +21690,28 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueOptions} EnumValueOptions
                  */
-                EnumValueOptions.fromObject = function fromObject(object) {
+                EnumValueOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumValueOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.debugRedact != null)
                         message.debugRedact = Boolean(object.debugRedact);
+                    if (object.featureSupport != null) {
+                        if (typeof object.featureSupport !== "object")
+                            throw TypeError(".google.protobuf.EnumValueOptions.featureSupport: object expected");
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
+                    }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
                             throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected");
@@ -19685,7 +21719,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -19710,6 +21744,7 @@
                         object.deprecated = false;
                         object.features = null;
                         object.debugRedact = false;
+                        object.featureSupport = null;
                     }
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         object.deprecated = message.deprecated;
@@ -19717,6 +21752,8 @@
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         object.debugRedact = message.debugRedact;
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport"))
+                        object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
                         object.uninterpretedOption = [];
                         for (var j = 0; j < message.uninterpretedOption.length; ++j)
@@ -19780,7 +21817,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -19896,9 +21933,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceOptions.decode = function decode(reader, length, error) {
+                ServiceOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -19906,7 +21947,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 34: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 33: {
@@ -19916,7 +21957,7 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1049: {
@@ -19932,7 +21973,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19963,11 +22004,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceOptions.verify = function verify(message) {
+                ServiceOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -19978,7 +22023,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -20003,14 +22048,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceOptions} ServiceOptions
                  */
-                ServiceOptions.fromObject = function fromObject(object) {
+                ServiceOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ServiceOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -20021,7 +22070,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.defaultHost"] != null)
@@ -20129,7 +22178,7 @@
                     this[".google.api.methodSignature"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -20246,9 +22295,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodOptions.decode = function decode(reader, length, error) {
+                MethodOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -20264,17 +22317,17 @@
                                 break;
                             }
                         case 35: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 72295728: {
-                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32());
+                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 1051: {
@@ -20284,7 +22337,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -20315,9 +22368,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodOptions.verify = function verify(message) {
+                MethodOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
@@ -20331,7 +22388,7 @@
                             break;
                         }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -20339,13 +22396,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) {
-                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"]);
+                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"], long + 1);
                         if (error)
                             return ".google.api.http." + error;
                     }
@@ -20367,9 +22424,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodOptions} MethodOptions
                  */
-                MethodOptions.fromObject = function fromObject(object) {
+                MethodOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -20396,7 +22457,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MethodOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -20405,13 +22466,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.http"] != null) {
                         if (typeof object[".google.api.http"] !== "object")
                             throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected");
-                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]);
+                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"], long + 1);
                     }
                     if (object[".google.api.methodSignature"]) {
                         if (!Array.isArray(object[".google.api.methodSignature"]))
@@ -20539,7 +22600,7 @@
                     this.name = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -20665,9 +22726,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                UninterpretedOption.decode = function decode(reader, length, error) {
+                UninterpretedOption.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -20677,7 +22742,7 @@
                         case 2: {
                                 if (!(message.name && message.name.length))
                                     message.name = [];
-                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32()));
+                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
@@ -20705,7 +22770,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -20736,14 +22801,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                UninterpretedOption.verify = function verify(message) {
+                UninterpretedOption.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name")) {
                         if (!Array.isArray(message.name))
                             return "name: array expected";
                         for (var i = 0; i < message.name.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i], long + 1);
                             if (error)
                                 return "name." + error;
                         }
@@ -20777,9 +22846,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.UninterpretedOption} UninterpretedOption
                  */
-                UninterpretedOption.fromObject = function fromObject(object) {
+                UninterpretedOption.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.UninterpretedOption)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.UninterpretedOption();
                     if (object.name) {
                         if (!Array.isArray(object.name))
@@ -20788,7 +22861,7 @@
                         for (var i = 0; i < object.name.length; ++i) {
                             if (typeof object.name[i] !== "object")
                                 throw TypeError(".google.protobuf.UninterpretedOption.name: object expected");
-                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]);
+                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i], long + 1);
                         }
                     }
                     if (object.identifierValue != null)
@@ -20933,7 +23006,7 @@
                     function NamePart(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -21006,9 +23079,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    NamePart.decode = function decode(reader, length, error) {
+                    NamePart.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -21024,7 +23101,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -21059,9 +23136,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    NamePart.verify = function verify(message) {
+                    NamePart.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (!$util.isString(message.namePart))
                             return "namePart: string expected";
                         if (typeof message.isExtension !== "boolean")
@@ -21077,9 +23158,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
                      */
-                    NamePart.fromObject = function fromObject(object) {
+                    NamePart.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         if (object.namePart != null)
                             message.namePart = String(object.namePart);
@@ -21156,6 +23241,8 @@
                  * @property {google.protobuf.FeatureSet.Utf8Validation|null} [utf8Validation] FeatureSet utf8Validation
                  * @property {google.protobuf.FeatureSet.MessageEncoding|null} [messageEncoding] FeatureSet messageEncoding
                  * @property {google.protobuf.FeatureSet.JsonFormat|null} [jsonFormat] FeatureSet jsonFormat
+                 * @property {google.protobuf.FeatureSet.EnforceNamingStyle|null} [enforceNamingStyle] FeatureSet enforceNamingStyle
+                 * @property {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null} [defaultSymbolVisibility] FeatureSet defaultSymbolVisibility
                  */
     
                 /**
@@ -21169,7 +23256,7 @@
                 function FeatureSet(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -21221,6 +23308,22 @@
                  */
                 FeatureSet.prototype.jsonFormat = 0;
     
+                /**
+                 * FeatureSet enforceNamingStyle.
+                 * @member {google.protobuf.FeatureSet.EnforceNamingStyle} enforceNamingStyle
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.enforceNamingStyle = 0;
+    
+                /**
+                 * FeatureSet defaultSymbolVisibility.
+                 * @member {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility} defaultSymbolVisibility
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.defaultSymbolVisibility = 0;
+    
                 /**
                  * Creates a new FeatureSet instance using the specified properties.
                  * @function create
@@ -21257,6 +23360,10 @@
                         writer.uint32(/* id 5, wireType 0 =*/40).int32(message.messageEncoding);
                     if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat"))
                         writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jsonFormat);
+                    if (message.enforceNamingStyle != null && Object.hasOwnProperty.call(message, "enforceNamingStyle"))
+                        writer.uint32(/* id 7, wireType 0 =*/56).int32(message.enforceNamingStyle);
+                    if (message.defaultSymbolVisibility != null && Object.hasOwnProperty.call(message, "defaultSymbolVisibility"))
+                        writer.uint32(/* id 8, wireType 0 =*/64).int32(message.defaultSymbolVisibility);
                     return writer;
                 };
     
@@ -21284,9 +23391,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSet.decode = function decode(reader, length, error) {
+                FeatureSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -21317,8 +23428,16 @@
                                 message.jsonFormat = reader.int32();
                                 break;
                             }
+                        case 7: {
+                                message.enforceNamingStyle = reader.int32();
+                                break;
+                            }
+                        case 8: {
+                                message.defaultSymbolVisibility = reader.int32();
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -21349,9 +23468,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSet.verify = function verify(message) {
+                FeatureSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
                         switch (message.fieldPresence) {
                         default:
@@ -21407,6 +23530,26 @@
                         case 2:
                             break;
                         }
+                    if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle"))
+                        switch (message.enforceNamingStyle) {
+                        default:
+                            return "enforceNamingStyle: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility"))
+                        switch (message.defaultSymbolVisibility) {
+                        default:
+                            return "defaultSymbolVisibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                        case 3:
+                        case 4:
+                            break;
+                        }
                     return null;
                 };
     
@@ -21418,9 +23561,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSet} FeatureSet
                  */
-                FeatureSet.fromObject = function fromObject(object) {
+                FeatureSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSet();
                     switch (object.fieldPresence) {
                     default:
@@ -21546,6 +23693,54 @@
                         message.jsonFormat = 2;
                         break;
                     }
+                    switch (object.enforceNamingStyle) {
+                    default:
+                        if (typeof object.enforceNamingStyle === "number") {
+                            message.enforceNamingStyle = object.enforceNamingStyle;
+                            break;
+                        }
+                        break;
+                    case "ENFORCE_NAMING_STYLE_UNKNOWN":
+                    case 0:
+                        message.enforceNamingStyle = 0;
+                        break;
+                    case "STYLE2024":
+                    case 1:
+                        message.enforceNamingStyle = 1;
+                        break;
+                    case "STYLE_LEGACY":
+                    case 2:
+                        message.enforceNamingStyle = 2;
+                        break;
+                    }
+                    switch (object.defaultSymbolVisibility) {
+                    default:
+                        if (typeof object.defaultSymbolVisibility === "number") {
+                            message.defaultSymbolVisibility = object.defaultSymbolVisibility;
+                            break;
+                        }
+                        break;
+                    case "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN":
+                    case 0:
+                        message.defaultSymbolVisibility = 0;
+                        break;
+                    case "EXPORT_ALL":
+                    case 1:
+                        message.defaultSymbolVisibility = 1;
+                        break;
+                    case "EXPORT_TOP_LEVEL":
+                    case 2:
+                        message.defaultSymbolVisibility = 2;
+                        break;
+                    case "LOCAL_ALL":
+                    case 3:
+                        message.defaultSymbolVisibility = 3;
+                        break;
+                    case "STRICT":
+                    case 4:
+                        message.defaultSymbolVisibility = 4;
+                        break;
+                    }
                     return message;
                 };
     
@@ -21569,6 +23764,8 @@
                         object.utf8Validation = options.enums === String ? "UTF8_VALIDATION_UNKNOWN" : 0;
                         object.messageEncoding = options.enums === String ? "MESSAGE_ENCODING_UNKNOWN" : 0;
                         object.jsonFormat = options.enums === String ? "JSON_FORMAT_UNKNOWN" : 0;
+                        object.enforceNamingStyle = options.enums === String ? "ENFORCE_NAMING_STYLE_UNKNOWN" : 0;
+                        object.defaultSymbolVisibility = options.enums === String ? "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN" : 0;
                     }
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
                         object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence;
@@ -21582,6 +23779,10 @@
                         object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding;
                     if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat"))
                         object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat;
+                    if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle"))
+                        object.enforceNamingStyle = options.enums === String ? $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] === undefined ? message.enforceNamingStyle : $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] : message.enforceNamingStyle;
+                    if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility"))
+                        object.defaultSymbolVisibility = options.enums === String ? $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] === undefined ? message.defaultSymbolVisibility : $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] : message.defaultSymbolVisibility;
                     return object;
                 };
     
@@ -21709,6 +23910,231 @@
                     return values;
                 })();
     
+                /**
+                 * EnforceNamingStyle enum.
+                 * @name google.protobuf.FeatureSet.EnforceNamingStyle
+                 * @enum {number}
+                 * @property {number} ENFORCE_NAMING_STYLE_UNKNOWN=0 ENFORCE_NAMING_STYLE_UNKNOWN value
+                 * @property {number} STYLE2024=1 STYLE2024 value
+                 * @property {number} STYLE_LEGACY=2 STYLE_LEGACY value
+                 */
+                FeatureSet.EnforceNamingStyle = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "ENFORCE_NAMING_STYLE_UNKNOWN"] = 0;
+                    values[valuesById[1] = "STYLE2024"] = 1;
+                    values[valuesById[2] = "STYLE_LEGACY"] = 2;
+                    return values;
+                })();
+    
+                FeatureSet.VisibilityFeature = (function() {
+    
+                    /**
+                     * Properties of a VisibilityFeature.
+                     * @memberof google.protobuf.FeatureSet
+                     * @interface IVisibilityFeature
+                     */
+    
+                    /**
+                     * Constructs a new VisibilityFeature.
+                     * @memberof google.protobuf.FeatureSet
+                     * @classdesc Represents a VisibilityFeature.
+                     * @implements IVisibilityFeature
+                     * @constructor
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set
+                     */
+                    function VisibilityFeature(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * Creates a new VisibilityFeature instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature instance
+                     */
+                    VisibilityFeature.create = function create(properties) {
+                        return new VisibilityFeature(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    VisibilityFeature.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    VisibilityFeature.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a VisibilityFeature message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    VisibilityFeature.decode = function decode(reader, length, error, long) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet.VisibilityFeature();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            default:
+                                reader.skipType(tag & 7, long);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    VisibilityFeature.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a VisibilityFeature message.
+                     * @function verify
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    VisibilityFeature.verify = function verify(message, long) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     */
+                    VisibilityFeature.fromObject = function fromObject(object, long) {
+                        if (object instanceof $root.google.protobuf.FeatureSet.VisibilityFeature)
+                            return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        return new $root.google.protobuf.FeatureSet.VisibilityFeature();
+                    };
+    
+                    /**
+                     * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.VisibilityFeature} message VisibilityFeature
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    VisibilityFeature.toObject = function toObject() {
+                        return {};
+                    };
+    
+                    /**
+                     * Converts this VisibilityFeature to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    VisibilityFeature.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for VisibilityFeature
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    VisibilityFeature.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FeatureSet.VisibilityFeature";
+                    };
+    
+                    /**
+                     * DefaultSymbolVisibility enum.
+                     * @name google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility
+                     * @enum {number}
+                     * @property {number} DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0 DEFAULT_SYMBOL_VISIBILITY_UNKNOWN value
+                     * @property {number} EXPORT_ALL=1 EXPORT_ALL value
+                     * @property {number} EXPORT_TOP_LEVEL=2 EXPORT_TOP_LEVEL value
+                     * @property {number} LOCAL_ALL=3 LOCAL_ALL value
+                     * @property {number} STRICT=4 STRICT value
+                     */
+                    VisibilityFeature.DefaultSymbolVisibility = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN"] = 0;
+                        values[valuesById[1] = "EXPORT_ALL"] = 1;
+                        values[valuesById[2] = "EXPORT_TOP_LEVEL"] = 2;
+                        values[valuesById[3] = "LOCAL_ALL"] = 3;
+                        values[valuesById[4] = "STRICT"] = 4;
+                        return values;
+                    })();
+    
+                    return VisibilityFeature;
+                })();
+    
                 return FeatureSet;
             })();
     
@@ -21735,7 +24161,7 @@
                     this.defaults = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -21821,9 +24247,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSetDefaults.decode = function decode(reader, length, error) {
+                FeatureSetDefaults.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -21833,7 +24263,7 @@
                         case 1: {
                                 if (!(message.defaults && message.defaults.length))
                                     message.defaults = [];
-                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32()));
+                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
@@ -21845,7 +24275,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -21876,14 +24306,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSetDefaults.verify = function verify(message) {
+                FeatureSetDefaults.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.defaults != null && message.hasOwnProperty("defaults")) {
                         if (!Array.isArray(message.defaults))
                             return "defaults: array expected";
                         for (var i = 0; i < message.defaults.length; ++i) {
-                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i]);
+                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i], long + 1);
                             if (error)
                                 return "defaults." + error;
                         }
@@ -21893,6 +24327,7 @@
                         default:
                             return "minimumEdition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -21910,6 +24345,7 @@
                         default:
                             return "maximumEdition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -21933,9 +24369,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults
                  */
-                FeatureSetDefaults.fromObject = function fromObject(object) {
+                FeatureSetDefaults.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSetDefaults)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSetDefaults();
                     if (object.defaults) {
                         if (!Array.isArray(object.defaults))
@@ -21944,7 +24384,7 @@
                         for (var i = 0; i < object.defaults.length; ++i) {
                             if (typeof object.defaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: object expected");
-                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i]);
+                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i], long + 1);
                         }
                     }
                     switch (object.minimumEdition) {
@@ -21958,6 +24398,10 @@
                     case 0:
                         message.minimumEdition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.minimumEdition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.minimumEdition = 998;
@@ -22010,6 +24454,10 @@
                     case 0:
                         message.maximumEdition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.maximumEdition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.maximumEdition = 998;
@@ -22118,7 +24566,8 @@
                      * @memberof google.protobuf.FeatureSetDefaults
                      * @interface IFeatureSetEditionDefault
                      * @property {google.protobuf.Edition|null} [edition] FeatureSetEditionDefault edition
-                     * @property {google.protobuf.IFeatureSet|null} [features] FeatureSetEditionDefault features
+                     * @property {google.protobuf.IFeatureSet|null} [overridableFeatures] FeatureSetEditionDefault overridableFeatures
+                     * @property {google.protobuf.IFeatureSet|null} [fixedFeatures] FeatureSetEditionDefault fixedFeatures
                      */
     
                     /**
@@ -22132,7 +24581,7 @@
                     function FeatureSetEditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -22145,12 +24594,20 @@
                     FeatureSetEditionDefault.prototype.edition = 0;
     
                     /**
-                     * FeatureSetEditionDefault features.
-                     * @member {google.protobuf.IFeatureSet|null|undefined} features
+                     * FeatureSetEditionDefault overridableFeatures.
+                     * @member {google.protobuf.IFeatureSet|null|undefined} overridableFeatures
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @instance
+                     */
+                    FeatureSetEditionDefault.prototype.overridableFeatures = null;
+    
+                    /**
+                     * FeatureSetEditionDefault fixedFeatures.
+                     * @member {google.protobuf.IFeatureSet|null|undefined} fixedFeatures
                      * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
                      * @instance
                      */
-                    FeatureSetEditionDefault.prototype.features = null;
+                    FeatureSetEditionDefault.prototype.fixedFeatures = null;
     
                     /**
                      * Creates a new FeatureSetEditionDefault instance using the specified properties.
@@ -22176,10 +24633,12 @@
                     FeatureSetEditionDefault.encode = function encode(message, writer) {
                         if (!writer)
                             writer = $Writer.create();
-                        if (message.features != null && Object.hasOwnProperty.call(message, "features"))
-                            $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                         if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
                             writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition);
+                        if (message.overridableFeatures != null && Object.hasOwnProperty.call(message, "overridableFeatures"))
+                            $root.google.protobuf.FeatureSet.encode(message.overridableFeatures, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                        if (message.fixedFeatures != null && Object.hasOwnProperty.call(message, "fixedFeatures"))
+                            $root.google.protobuf.FeatureSet.encode(message.fixedFeatures, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
                         return writer;
                     };
     
@@ -22207,9 +24666,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    FeatureSetEditionDefault.decode = function decode(reader, length, error) {
+                    FeatureSetEditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -22220,12 +24683,16 @@
                                     message.edition = reader.int32();
                                     break;
                                 }
-                            case 2: {
-                                    message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                            case 4: {
+                                    message.overridableFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
+                                    break;
+                                }
+                            case 5: {
+                                    message.fixedFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -22256,14 +24723,19 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    FeatureSetEditionDefault.verify = function verify(message) {
+                    FeatureSetEditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
                                 return "edition: enum value expected";
                             case 0:
+                            case 900:
                             case 998:
                             case 999:
                             case 1000:
@@ -22276,10 +24748,15 @@
                             case 2147483647:
                                 break;
                             }
-                        if (message.features != null && message.hasOwnProperty("features")) {
-                            var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) {
+                            var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures, long + 1);
+                            if (error)
+                                return "overridableFeatures." + error;
+                        }
+                        if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) {
+                            var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures, long + 1);
                             if (error)
-                                return "features." + error;
+                                return "fixedFeatures." + error;
                         }
                         return null;
                     };
@@ -22292,9 +24769,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault
                      */
-                    FeatureSetEditionDefault.fromObject = function fromObject(object) {
+                    FeatureSetEditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         switch (object.edition) {
                         default:
@@ -22307,6 +24788,10 @@
                         case 0:
                             message.edition = 0;
                             break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.edition = 900;
+                            break;
                         case "EDITION_PROTO2":
                         case 998:
                             message.edition = 998;
@@ -22348,10 +24833,15 @@
                             message.edition = 2147483647;
                             break;
                         }
-                        if (object.features != null) {
-                            if (typeof object.features !== "object")
-                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features: object expected");
-                            message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        if (object.overridableFeatures != null) {
+                            if (typeof object.overridableFeatures !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridableFeatures: object expected");
+                            message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures, long + 1);
+                        }
+                        if (object.fixedFeatures != null) {
+                            if (typeof object.fixedFeatures !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixedFeatures: object expected");
+                            message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures, long + 1);
                         }
                         return message;
                     };
@@ -22370,13 +24860,16 @@
                             options = {};
                         var object = {};
                         if (options.defaults) {
-                            object.features = null;
                             object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.overridableFeatures = null;
+                            object.fixedFeatures = null;
                         }
-                        if (message.features != null && message.hasOwnProperty("features"))
-                            object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures"))
+                            object.overridableFeatures = $root.google.protobuf.FeatureSet.toObject(message.overridableFeatures, options);
+                        if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures"))
+                            object.fixedFeatures = $root.google.protobuf.FeatureSet.toObject(message.fixedFeatures, options);
                         return object;
                     };
     
@@ -22433,7 +24926,7 @@
                     this.location = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -22499,9 +24992,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                SourceCodeInfo.decode = function decode(reader, length, error) {
+                SourceCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -22511,11 +25008,11 @@
                         case 1: {
                                 if (!(message.location && message.location.length))
                                     message.location = [];
-                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32()));
+                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -22546,14 +25043,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                SourceCodeInfo.verify = function verify(message) {
+                SourceCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.location != null && message.hasOwnProperty("location")) {
                         if (!Array.isArray(message.location))
                             return "location: array expected";
                         for (var i = 0; i < message.location.length; ++i) {
-                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]);
+                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i], long + 1);
                             if (error)
                                 return "location." + error;
                         }
@@ -22569,9 +25070,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo
                  */
-                SourceCodeInfo.fromObject = function fromObject(object) {
+                SourceCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.SourceCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.SourceCodeInfo();
                     if (object.location) {
                         if (!Array.isArray(object.location))
@@ -22580,7 +25085,7 @@
                         for (var i = 0; i < object.location.length; ++i) {
                             if (typeof object.location[i] !== "object")
                                 throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected");
-                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]);
+                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i], long + 1);
                         }
                     }
                     return message;
@@ -22662,7 +25167,7 @@
                         this.leadingDetachedComments = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -22776,9 +25281,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Location.decode = function decode(reader, length, error) {
+                    Location.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -22822,7 +25331,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -22853,9 +25362,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Location.verify = function verify(message) {
+                    Location.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -22894,9 +25407,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.SourceCodeInfo.Location} Location
                      */
-                    Location.fromObject = function fromObject(object) {
+                    Location.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.SourceCodeInfo.Location)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.SourceCodeInfo.Location();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -23023,7 +25540,7 @@
                     this.annotation = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23089,9 +25606,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GeneratedCodeInfo.decode = function decode(reader, length, error) {
+                GeneratedCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23101,11 +25622,11 @@
                         case 1: {
                                 if (!(message.annotation && message.annotation.length))
                                     message.annotation = [];
-                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32()));
+                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23136,14 +25657,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GeneratedCodeInfo.verify = function verify(message) {
+                GeneratedCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.annotation != null && message.hasOwnProperty("annotation")) {
                         if (!Array.isArray(message.annotation))
                             return "annotation: array expected";
                         for (var i = 0; i < message.annotation.length; ++i) {
-                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]);
+                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i], long + 1);
                             if (error)
                                 return "annotation." + error;
                         }
@@ -23159,9 +25684,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo
                  */
-                GeneratedCodeInfo.fromObject = function fromObject(object) {
+                GeneratedCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.GeneratedCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.GeneratedCodeInfo();
                     if (object.annotation) {
                         if (!Array.isArray(object.annotation))
@@ -23170,7 +25699,7 @@
                         for (var i = 0; i < object.annotation.length; ++i) {
                             if (typeof object.annotation[i] !== "object")
                                 throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected");
-                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]);
+                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i], long + 1);
                         }
                     }
                     return message;
@@ -23250,7 +25779,7 @@
                         this.path = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -23359,9 +25888,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Annotation.decode = function decode(reader, length, error) {
+                    Annotation.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -23396,7 +25929,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -23427,9 +25960,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Annotation.verify = function verify(message) {
+                    Annotation.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -23466,9 +26003,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation
                      */
-                    Annotation.fromObject = function fromObject(object) {
+                    Annotation.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -23591,6 +26132,22 @@
                 return GeneratedCodeInfo;
             })();
     
+            /**
+             * SymbolVisibility enum.
+             * @name google.protobuf.SymbolVisibility
+             * @enum {number}
+             * @property {number} VISIBILITY_UNSET=0 VISIBILITY_UNSET value
+             * @property {number} VISIBILITY_LOCAL=1 VISIBILITY_LOCAL value
+             * @property {number} VISIBILITY_EXPORT=2 VISIBILITY_EXPORT value
+             */
+            protobuf.SymbolVisibility = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "VISIBILITY_UNSET"] = 0;
+                values[valuesById[1] = "VISIBILITY_LOCAL"] = 1;
+                values[valuesById[2] = "VISIBILITY_EXPORT"] = 2;
+                return values;
+            })();
+    
             protobuf.Timestamp = (function() {
     
                 /**
@@ -23612,7 +26169,7 @@
                 function Timestamp(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23687,9 +26244,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Timestamp.decode = function decode(reader, length, error) {
+                Timestamp.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23705,7 +26266,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23736,9 +26297,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Timestamp.verify = function verify(message) {
+                Timestamp.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -23756,9 +26321,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Timestamp} Timestamp
                  */
-                Timestamp.fromObject = function fromObject(object) {
+                Timestamp.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Timestamp)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Timestamp();
                     if (object.seconds != null)
                         if ($util.Long)
@@ -23855,7 +26424,7 @@
                 function Duration(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23930,9 +26499,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Duration.decode = function decode(reader, length, error) {
+                Duration.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Duration();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23948,7 +26521,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23979,9 +26552,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Duration.verify = function verify(message) {
+                Duration.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -23999,9 +26576,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Duration} Duration
                  */
-                Duration.fromObject = function fromObject(object) {
+                Duration.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Duration)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Duration();
                     if (object.seconds != null)
                         if ($util.Long)
diff --git a/packages/google-cloud-servicehealth/protos/protos.json b/packages/google-cloud-servicehealth/protos/protos.json
index af3ab21037a4..fe85ffac67b2 100644
--- a/packages/google-cloud-servicehealth/protos/protos.json
+++ b/packages/google-cloud-servicehealth/protos/protos.json
@@ -820,8 +820,7 @@
             "java_multiple_files": true,
             "java_outer_classname": "LaunchStageProto",
             "java_package": "com.google.api",
-            "objc_class_prefix": "GAPI",
-            "cc_enable_arenas": true
+            "objc_class_prefix": "GAPI"
           },
           "nested": {
             "fieldBehavior": {
@@ -1044,6 +1043,10 @@
                   "rule": "repeated",
                   "type": "ClientLibraryDestination",
                   "id": 2
+                },
+                "selectiveGapicGeneration": {
+                  "type": "SelectiveGapicGeneration",
+                  "id": 3
                 }
               }
             },
@@ -1184,6 +1187,28 @@
                 "common": {
                   "type": "CommonLanguageSettings",
                   "id": 1
+                },
+                "experimentalFeatures": {
+                  "type": "ExperimentalFeatures",
+                  "id": 2
+                }
+              },
+              "nested": {
+                "ExperimentalFeatures": {
+                  "fields": {
+                    "restAsyncIoEnabled": {
+                      "type": "bool",
+                      "id": 1
+                    },
+                    "protobufPythonicTypesEnabled": {
+                      "type": "bool",
+                      "id": 2
+                    },
+                    "unversionedPackageDisabled": {
+                      "type": "bool",
+                      "id": 3
+                    }
+                  }
                 }
               }
             },
@@ -1241,6 +1266,11 @@
                 "common": {
                   "type": "CommonLanguageSettings",
                   "id": 1
+                },
+                "renamedServices": {
+                  "keyType": "string",
+                  "type": "string",
+                  "id": 2
                 }
               }
             },
@@ -1302,6 +1332,19 @@
                 "PACKAGE_MANAGER": 20
               }
             },
+            "SelectiveGapicGeneration": {
+              "fields": {
+                "methods": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 1
+                },
+                "generateOmittedAsInternal": {
+                  "type": "bool",
+                  "id": 2
+                }
+              }
+            },
             "LaunchStage": {
               "values": {
                 "LAUNCH_STAGE_UNSPECIFIED": 0,
@@ -1335,12 +1378,19 @@
                   "type": "FileDescriptorProto",
                   "id": 1
                 }
-              }
+              },
+              "extensions": [
+                [
+                  536000000,
+                  536000000
+                ]
+              ]
             },
             "Edition": {
               "edition": "proto2",
               "values": {
                 "EDITION_UNKNOWN": 0,
+                "EDITION_LEGACY": 900,
                 "EDITION_PROTO2": 998,
                 "EDITION_PROTO3": 999,
                 "EDITION_2023": 1000,
@@ -1379,6 +1429,11 @@
                   "type": "int32",
                   "id": 11
                 },
+                "optionDependency": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 15
+                },
                 "messageType": {
                   "rule": "repeated",
                   "type": "DescriptorProto",
@@ -1467,6 +1522,10 @@
                   "rule": "repeated",
                   "type": "string",
                   "id": 10
+                },
+                "visibility": {
+                  "type": "SymbolVisibility",
+                  "id": 11
                 }
               },
               "nested": {
@@ -1692,6 +1751,10 @@
                   "rule": "repeated",
                   "type": "string",
                   "id": 5
+                },
+                "visibility": {
+                  "type": "SymbolVisibility",
+                  "id": 6
                 }
               },
               "nested": {
@@ -1742,7 +1805,14 @@
                   "type": "ServiceOptions",
                   "id": 3
                 }
-              }
+              },
+              "reserved": [
+                [
+                  4,
+                  4
+                ],
+                "stream"
+              ]
             },
             "MethodDescriptorProto": {
               "edition": "proto2",
@@ -1906,6 +1976,7 @@
                   42,
                   42
                 ],
+                "php_generic_services",
                 [
                   38,
                   38
@@ -2041,7 +2112,8 @@
                   "type": "bool",
                   "id": 10,
                   "options": {
-                    "default": false
+                    "default": false,
+                    "deprecated": true
                   }
                 },
                 "debugRedact": {
@@ -2069,6 +2141,10 @@
                   "type": "FeatureSet",
                   "id": 21
                 },
+                "featureSupport": {
+                  "type": "FeatureSupport",
+                  "id": 22
+                },
                 "uninterpretedOption": {
                   "rule": "repeated",
                   "type": "UninterpretedOption",
@@ -2138,6 +2214,26 @@
                       "id": 2
                     }
                   }
+                },
+                "FeatureSupport": {
+                  "fields": {
+                    "editionIntroduced": {
+                      "type": "Edition",
+                      "id": 1
+                    },
+                    "editionDeprecated": {
+                      "type": "Edition",
+                      "id": 2
+                    },
+                    "deprecationWarning": {
+                      "type": "string",
+                      "id": 3
+                    },
+                    "editionRemoved": {
+                      "type": "Edition",
+                      "id": 4
+                    }
+                  }
                 }
               }
             },
@@ -2226,6 +2322,10 @@
                     "default": false
                   }
                 },
+                "featureSupport": {
+                  "type": "FieldOptions.FeatureSupport",
+                  "id": 4
+                },
                 "uninterpretedOption": {
                   "rule": "repeated",
                   "type": "UninterpretedOption",
@@ -2368,6 +2468,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_2023",
                     "edition_defaults.value": "EXPLICIT"
                   }
@@ -2378,6 +2479,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "OPEN"
                   }
@@ -2388,6 +2490,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "PACKED"
                   }
@@ -2398,6 +2501,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "VERIFY"
                   }
@@ -2408,7 +2512,8 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
-                    "edition_defaults.edition": "EDITION_PROTO2",
+                    "feature_support.edition_introduced": "EDITION_2023",
+                    "edition_defaults.edition": "EDITION_LEGACY",
                     "edition_defaults.value": "LENGTH_PREFIXED"
                   }
                 },
@@ -2418,27 +2523,38 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "ALLOW"
                   }
+                },
+                "enforceNamingStyle": {
+                  "type": "EnforceNamingStyle",
+                  "id": 7,
+                  "options": {
+                    "retention": "RETENTION_SOURCE",
+                    "targets": "TARGET_TYPE_METHOD",
+                    "feature_support.edition_introduced": "EDITION_2024",
+                    "edition_defaults.edition": "EDITION_2024",
+                    "edition_defaults.value": "STYLE2024"
+                  }
+                },
+                "defaultSymbolVisibility": {
+                  "type": "VisibilityFeature.DefaultSymbolVisibility",
+                  "id": 8,
+                  "options": {
+                    "retention": "RETENTION_SOURCE",
+                    "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2024",
+                    "edition_defaults.edition": "EDITION_2024",
+                    "edition_defaults.value": "EXPORT_TOP_LEVEL"
+                  }
                 }
               },
               "extensions": [
                 [
                   1000,
-                  1000
-                ],
-                [
-                  1001,
-                  1001
-                ],
-                [
-                  1002,
-                  1002
-                ],
-                [
-                  9990,
-                  9990
+                  9994
                 ],
                 [
                   9995,
@@ -2483,7 +2599,13 @@
                     "UTF8_VALIDATION_UNKNOWN": 0,
                     "VERIFY": 2,
                     "NONE": 3
-                  }
+                  },
+                  "reserved": [
+                    [
+                      1,
+                      1
+                    ]
+                  ]
                 },
                 "MessageEncoding": {
                   "values": {
@@ -2498,6 +2620,33 @@
                     "ALLOW": 1,
                     "LEGACY_BEST_EFFORT": 2
                   }
+                },
+                "EnforceNamingStyle": {
+                  "values": {
+                    "ENFORCE_NAMING_STYLE_UNKNOWN": 0,
+                    "STYLE2024": 1,
+                    "STYLE_LEGACY": 2
+                  }
+                },
+                "VisibilityFeature": {
+                  "fields": {},
+                  "reserved": [
+                    [
+                      1,
+                      536870911
+                    ]
+                  ],
+                  "nested": {
+                    "DefaultSymbolVisibility": {
+                      "values": {
+                        "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": 0,
+                        "EXPORT_ALL": 1,
+                        "EXPORT_TOP_LEVEL": 2,
+                        "LOCAL_ALL": 3,
+                        "STRICT": 4
+                      }
+                    }
+                  }
                 }
               }
             },
@@ -2525,11 +2674,26 @@
                       "type": "Edition",
                       "id": 3
                     },
-                    "features": {
+                    "overridableFeatures": {
                       "type": "FeatureSet",
-                      "id": 2
+                      "id": 4
+                    },
+                    "fixedFeatures": {
+                      "type": "FeatureSet",
+                      "id": 5
                     }
-                  }
+                  },
+                  "reserved": [
+                    [
+                      1,
+                      1
+                    ],
+                    [
+                      2,
+                      2
+                    ],
+                    "features"
+                  ]
                 }
               }
             },
@@ -2542,6 +2706,12 @@
                   "id": 1
                 }
               },
+              "extensions": [
+                [
+                  536000000,
+                  536000000
+                ]
+              ],
               "nested": {
                 "Location": {
                   "fields": {
@@ -2627,6 +2797,14 @@
                 }
               }
             },
+            "SymbolVisibility": {
+              "edition": "proto2",
+              "values": {
+                "VISIBILITY_UNSET": 0,
+                "VISIBILITY_LOCAL": 1,
+                "VISIBILITY_EXPORT": 2
+              }
+            },
             "Timestamp": {
               "fields": {
                 "seconds": {
diff --git a/packages/google-cloud-servicehealth/src/v1/index.ts b/packages/google-cloud-servicehealth/src/v1/index.ts
index 3f18e4d6689c..b99181225750 100644
--- a/packages/google-cloud-servicehealth/src/v1/index.ts
+++ b/packages/google-cloud-servicehealth/src/v1/index.ts
@@ -16,4 +16,4 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-export {ServiceHealthClient} from './service_health_client';
+export { ServiceHealthClient } from './service_health_client';
diff --git a/packages/google-cloud-servicehealth/src/v1/service_health_client.ts b/packages/google-cloud-servicehealth/src/v1/service_health_client.ts
index ee5385592323..69dec0ec6704 100644
--- a/packages/google-cloud-servicehealth/src/v1/service_health_client.ts
+++ b/packages/google-cloud-servicehealth/src/v1/service_health_client.ts
@@ -18,11 +18,20 @@
 
 /* global window */
 import type * as gax from 'google-gax';
-import type {Callback, CallOptions, Descriptors, ClientOptions, PaginationCallback, GaxCall, LocationsClient, LocationProtos} from 'google-gax';
-import {Transform} from 'stream';
+import type {
+  Callback,
+  CallOptions,
+  Descriptors,
+  ClientOptions,
+  PaginationCallback,
+  GaxCall,
+  LocationsClient,
+  LocationProtos,
+} from 'google-gax';
+import { Transform } from 'stream';
 import * as protos from '../../protos/protos';
 import jsonProtos = require('../../protos/protos.json');
-import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax';
+import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax';
 
 /**
  * Client JSON configuration object, loaded from
@@ -44,7 +53,7 @@ export class ServiceHealthClient {
   private _gaxModule: typeof gax | typeof gax.fallback;
   private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
   private _protos: {};
-  private _defaults: {[method: string]: gax.CallSettings};
+  private _defaults: { [method: string]: gax.CallSettings };
   private _universeDomain: string;
   private _servicePath: string;
   private _log = logging.log('servicehealth');
@@ -57,10 +66,10 @@ export class ServiceHealthClient {
     batching: {},
   };
   warn: (code: string, message: string, warnType?: string) => void;
-  innerApiCalls: {[name: string]: Function};
+  innerApiCalls: { [name: string]: Function };
   locationsClient: LocationsClient;
-  pathTemplates: {[name: string]: gax.PathTemplate};
-  serviceHealthStub?: Promise<{[name: string]: Function}>;
+  pathTemplates: { [name: string]: gax.PathTemplate };
+  serviceHealthStub?: Promise<{ [name: string]: Function }>;
 
   /**
    * Construct an instance of ServiceHealthClient.
@@ -101,21 +110,42 @@ export class ServiceHealthClient {
    *     const client = new ServiceHealthClient({fallback: true}, gax);
    *     ```
    */
-  constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) {
+  constructor(
+    opts?: ClientOptions,
+    gaxInstance?: typeof gax | typeof gax.fallback,
+  ) {
     // Ensure that options include all the required fields.
     const staticMembers = this.constructor as typeof ServiceHealthClient;
-    if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) {
-      throw new Error('Please set either universe_domain or universeDomain, but not both.');
+    if (
+      opts?.universe_domain &&
+      opts?.universeDomain &&
+      opts?.universe_domain !== opts?.universeDomain
+    ) {
+      throw new Error(
+        'Please set either universe_domain or universeDomain, but not both.',
+      );
     }
-    const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined;
-    this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com';
+    const universeDomainEnvVar =
+      typeof process === 'object' && typeof process.env === 'object'
+        ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']
+        : undefined;
+    this._universeDomain =
+      opts?.universeDomain ??
+      opts?.universe_domain ??
+      universeDomainEnvVar ??
+      'googleapis.com';
     this._servicePath = 'servicehealth.' + this._universeDomain;
-    const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath;
-    this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint);
+    const servicePath =
+      opts?.servicePath || opts?.apiEndpoint || this._servicePath;
+    this._providedCustomServicePath = !!(
+      opts?.servicePath || opts?.apiEndpoint
+    );
     const port = opts?.port || staticMembers.port;
     const clientConfig = opts?.clientConfig ?? {};
-    const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function');
-    opts = Object.assign({servicePath, port, clientConfig, fallback}, opts);
+    const fallback =
+      opts?.fallback ??
+      (typeof window !== 'undefined' && typeof window?.fetch === 'function');
+    opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts);
 
     // Request numeric enum values if REST transport is used.
     opts.numericEnums = true;
@@ -140,7 +170,7 @@ export class ServiceHealthClient {
     this._opts = opts;
 
     // Save the auth object to the client, for use by other methods.
-    this.auth = (this._gaxGrpc.auth as gax.GoogleAuth);
+    this.auth = this._gaxGrpc.auth as gax.GoogleAuth;
 
     // Set useJWTAccessWithScope on the auth object.
     this.auth.useJWTAccessWithScope = true;
@@ -154,15 +184,11 @@ export class ServiceHealthClient {
     }
     this.locationsClient = new this._gaxModule.LocationsClient(
       this._gaxGrpc,
-      opts
+      opts,
     );
-  
 
     // Determine the client header string.
-    const clientHeader = [
-      `gax/${this._gaxModule.version}`,
-      `gapic/${version}`,
-    ];
+    const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
     if (typeof process === 'object' && 'versions' in process) {
       clientHeader.push(`gl-node/${process.versions.node}`);
     } else {
@@ -184,13 +210,13 @@ export class ServiceHealthClient {
     // Create useful helper objects for these.
     this.pathTemplates = {
       eventPathTemplate: new this._gaxModule.PathTemplate(
-        'projects/{project}/locations/{location}/events/{event}'
+        'projects/{project}/locations/{location}/events/{event}',
       ),
       organizationEventPathTemplate: new this._gaxModule.PathTemplate(
-        'organizations/{organization}/locations/{location}/organizationEvents/{event}'
+        'organizations/{organization}/locations/{location}/organizationEvents/{event}',
       ),
       organizationImpactPathTemplate: new this._gaxModule.PathTemplate(
-        'organizations/{organization}/locations/{location}/organizationImpacts/{organization_impact}'
+        'organizations/{organization}/locations/{location}/organizationImpacts/{organization_impact}',
       ),
     };
 
@@ -198,18 +224,30 @@ export class ServiceHealthClient {
     // (e.g. 50 results at a time, with tokens to get subsequent
     // pages). Denote the keys used for pagination and results.
     this.descriptors.page = {
-      listEvents:
-          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'events'),
-      listOrganizationEvents:
-          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'organizationEvents'),
-      listOrganizationImpacts:
-          new this._gaxModule.PageDescriptor('pageToken', 'nextPageToken', 'organizationImpacts')
+      listEvents: new this._gaxModule.PageDescriptor(
+        'pageToken',
+        'nextPageToken',
+        'events',
+      ),
+      listOrganizationEvents: new this._gaxModule.PageDescriptor(
+        'pageToken',
+        'nextPageToken',
+        'organizationEvents',
+      ),
+      listOrganizationImpacts: new this._gaxModule.PageDescriptor(
+        'pageToken',
+        'nextPageToken',
+        'organizationImpacts',
+      ),
     };
 
     // Put together the default options sent with requests.
     this._defaults = this._gaxGrpc.constructSettings(
-        'google.cloud.servicehealth.v1.ServiceHealth', gapicConfig as gax.ClientConfig,
-        opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')});
+      'google.cloud.servicehealth.v1.ServiceHealth',
+      gapicConfig as gax.ClientConfig,
+      opts.clientConfig || {},
+      { 'x-goog-api-client': clientHeader.join(' ') },
+    );
 
     // Set up a dictionary of "inner API calls"; the core implementation
     // of calling the API is handled in `google-gax`, with this code
@@ -240,37 +278,47 @@ export class ServiceHealthClient {
     // Put together the "service stub" for
     // google.cloud.servicehealth.v1.ServiceHealth.
     this.serviceHealthStub = this._gaxGrpc.createStub(
-        this._opts.fallback ?
-          (this._protos as protobuf.Root).lookupService('google.cloud.servicehealth.v1.ServiceHealth') :
-          // eslint-disable-next-line @typescript-eslint/no-explicit-any
+      this._opts.fallback
+        ? (this._protos as protobuf.Root).lookupService(
+            'google.cloud.servicehealth.v1.ServiceHealth',
+          )
+        : // eslint-disable-next-line @typescript-eslint/no-explicit-any
           (this._protos as any).google.cloud.servicehealth.v1.ServiceHealth,
-        this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>;
+      this._opts,
+      this._providedCustomServicePath,
+    ) as Promise<{ [method: string]: Function }>;
 
     // Iterate over each of the methods that the service provides
     // and create an API call method for each.
-    const serviceHealthStubMethods =
-        ['listEvents', 'getEvent', 'listOrganizationEvents', 'getOrganizationEvent', 'listOrganizationImpacts', 'getOrganizationImpact'];
+    const serviceHealthStubMethods = [
+      'listEvents',
+      'getEvent',
+      'listOrganizationEvents',
+      'getOrganizationEvent',
+      'listOrganizationImpacts',
+      'getOrganizationImpact',
+    ];
     for (const methodName of serviceHealthStubMethods) {
       const callPromise = this.serviceHealthStub.then(
-        stub => (...args: Array<{}>) => {
-          if (this._terminated) {
-            return Promise.reject('The client has already been closed.');
-          }
-          const func = stub[methodName];
-          return func.apply(stub, args);
-        },
-        (err: Error|null|undefined) => () => {
+        (stub) =>
+          (...args: Array<{}>) => {
+            if (this._terminated) {
+              return Promise.reject('The client has already been closed.');
+            }
+            const func = stub[methodName];
+            return func.apply(stub, args);
+          },
+        (err: Error | null | undefined) => () => {
           throw err;
-        });
+        },
+      );
 
-      const descriptor =
-        this.descriptors.page[methodName] ||
-        undefined;
+      const descriptor = this.descriptors.page[methodName] || undefined;
       const apiCall = this._gaxModule.createApiCall(
         callPromise,
         this._defaults[methodName],
         descriptor,
-        this._opts.fallback
+        this._opts.fallback,
       );
 
       this.innerApiCalls[methodName] = apiCall;
@@ -285,8 +333,14 @@ export class ServiceHealthClient {
    * @returns {string} The DNS address for this service.
    */
   static get servicePath() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static servicePath is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicehealth.googleapis.com';
   }
@@ -297,8 +351,14 @@ export class ServiceHealthClient {
    * @returns {string} The DNS address for this service.
    */
   static get apiEndpoint() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static apiEndpoint is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'servicehealth.googleapis.com';
   }
@@ -329,9 +389,7 @@ export class ServiceHealthClient {
    * @returns {string[]} List of default scopes.
    */
   static get scopes() {
-    return [
-      'https://www.googleapis.com/auth/cloud-platform'
-    ];
+    return ['https://www.googleapis.com/auth/cloud-platform'];
   }
 
   getProjectId(): Promise<string>;
@@ -340,8 +398,9 @@ export class ServiceHealthClient {
    * Return the project ID used by this class.
    * @returns {Promise} A promise that resolves to string containing the project ID.
    */
-  getProjectId(callback?: Callback<string, undefined, undefined>):
-      Promise<string>|void {
+  getProjectId(
+    callback?: Callback<string, undefined, undefined>,
+  ): Promise<string> | void {
     if (callback) {
       this.auth.getProjectId(callback);
       return;
@@ -352,427 +411,584 @@ export class ServiceHealthClient {
   // -------------------
   // -- Service calls --
   // -------------------
-/**
- * Retrieves a resource containing information about an event.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. Unique name of the event in this scope including project
- *   and location using the form
- *   `projects/{project_id}/locations/{location}/events/{event_id}`.
- *
- *   `project_id` - Project ID of the project that contains the event. <br>
- *   `location` - The location to get the service health events from. <br>
- *   `event_id` - Event ID to retrieve.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicehealth.v1.Event|Event}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/service_health.get_event.js</caption>
- * region_tag:servicehealth_v1_generated_ServiceHealth_GetEvent_async
- */
+  /**
+   * Retrieves a resource containing information about an event.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. Unique name of the event in this scope including project
+   *   and location using the form
+   *   `projects/{project_id}/locations/{location}/events/{event_id}`.
+   *
+   *   `project_id` - Project ID of the project that contains the event. <br>
+   *   `location` - The location to get the service health events from. <br>
+   *   `event_id` - Event ID to retrieve.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicehealth.v1.Event|Event}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/service_health.get_event.js</caption>
+   * region_tag:servicehealth_v1_generated_ServiceHealth_GetEvent_async
+   */
   getEvent(
-      request?: protos.google.cloud.servicehealth.v1.IGetEventRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IEvent,
-        protos.google.cloud.servicehealth.v1.IGetEventRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicehealth.v1.IGetEventRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IEvent,
+      protos.google.cloud.servicehealth.v1.IGetEventRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   getEvent(
-      request: protos.google.cloud.servicehealth.v1.IGetEventRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicehealth.v1.IEvent,
-          protos.google.cloud.servicehealth.v1.IGetEventRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicehealth.v1.IGetEventRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicehealth.v1.IEvent,
+      protos.google.cloud.servicehealth.v1.IGetEventRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getEvent(
-      request: protos.google.cloud.servicehealth.v1.IGetEventRequest,
-      callback: Callback<
-          protos.google.cloud.servicehealth.v1.IEvent,
-          protos.google.cloud.servicehealth.v1.IGetEventRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicehealth.v1.IGetEventRequest,
+    callback: Callback<
+      protos.google.cloud.servicehealth.v1.IEvent,
+      protos.google.cloud.servicehealth.v1.IGetEventRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getEvent(
-      request?: protos.google.cloud.servicehealth.v1.IGetEventRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicehealth.v1.IEvent,
-          protos.google.cloud.servicehealth.v1.IGetEventRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicehealth.v1.IGetEventRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicehealth.v1.IEvent,
-          protos.google.cloud.servicehealth.v1.IGetEventRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IEvent,
-        protos.google.cloud.servicehealth.v1.IGetEventRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicehealth.v1.IGetEventRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicehealth.v1.IEvent,
+      protos.google.cloud.servicehealth.v1.IGetEventRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IEvent,
+      protos.google.cloud.servicehealth.v1.IGetEventRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getEvent request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicehealth.v1.IEvent,
-        protos.google.cloud.servicehealth.v1.IGetEventRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicehealth.v1.IEvent,
+          | protos.google.cloud.servicehealth.v1.IGetEventRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getEvent response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getEvent(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicehealth.v1.IEvent,
-        protos.google.cloud.servicehealth.v1.IGetEventRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getEvent response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getEvent(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicehealth.v1.IEvent,
+          protos.google.cloud.servicehealth.v1.IGetEventRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('getEvent response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Retrieves a resource containing information about an event affecting an
- * organization .
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. Unique name of the event in this scope including organization and
- *   event ID using the form
- *   `organizations/{organization_id}/locations/locations/global/organizationEvents/{event_id}`.
- *
- *   `organization_id` - ID (number) of the project that contains the event. To
- *   get your `organization_id`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
- *   `event_id` - Organization event ID to retrieve.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicehealth.v1.OrganizationEvent|OrganizationEvent}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/service_health.get_organization_event.js</caption>
- * region_tag:servicehealth_v1_generated_ServiceHealth_GetOrganizationEvent_async
- */
+  /**
+   * Retrieves a resource containing information about an event affecting an
+   * organization .
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. Unique name of the event in this scope including organization and
+   *   event ID using the form
+   *   `organizations/{organization_id}/locations/locations/global/organizationEvents/{event_id}`.
+   *
+   *   `organization_id` - ID (number) of the project that contains the event. To
+   *   get your `organization_id`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
+   *   `event_id` - Organization event ID to retrieve.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicehealth.v1.OrganizationEvent|OrganizationEvent}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/service_health.get_organization_event.js</caption>
+   * region_tag:servicehealth_v1_generated_ServiceHealth_GetOrganizationEvent_async
+   */
   getOrganizationEvent(
-      request?: protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IOrganizationEvent,
-        protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent,
+      (
+        | protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   getOrganizationEvent(
-      request: protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicehealth.v1.IOrganizationEvent,
-          protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent,
+      | protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getOrganizationEvent(
-      request: protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest,
-      callback: Callback<
-          protos.google.cloud.servicehealth.v1.IOrganizationEvent,
-          protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest,
+    callback: Callback<
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent,
+      | protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getOrganizationEvent(
-      request?: protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicehealth.v1.IOrganizationEvent,
-          protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicehealth.v1.IOrganizationEvent,
-          protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IOrganizationEvent,
-        protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent,
+      | protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent,
+      (
+        | protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getOrganizationEvent request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicehealth.v1.IOrganizationEvent,
-        protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicehealth.v1.IOrganizationEvent,
+          | protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getOrganizationEvent response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getOrganizationEvent(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicehealth.v1.IOrganizationEvent,
-        protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getOrganizationEvent response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getOrganizationEvent(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicehealth.v1.IOrganizationEvent,
+          (
+            | protos.google.cloud.servicehealth.v1.IGetOrganizationEventRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('getOrganizationEvent response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
-/**
- * Retrieves a resource containing information about impact to an asset under
- * an organization affected by a service health event.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. Name of the resource using the form
- *   `organizations/{organization_id}/locations/global/organizationImpacts/{organization_impact_id}`.
- *
- *   `organization_id` - ID (number) of the organization that contains the
- *   event. To get your `organization_id`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
- *   `organization_impact_id` - ID of the [OrganizationImpact
- *   resource](/service-health/docs/reference/rest/v1beta/organizations.locations.organizationImpacts#OrganizationImpact).
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.servicehealth.v1.OrganizationImpact|OrganizationImpact}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/service_health.get_organization_impact.js</caption>
- * region_tag:servicehealth_v1_generated_ServiceHealth_GetOrganizationImpact_async
- */
+  /**
+   * Retrieves a resource containing information about impact to an asset under
+   * an organization affected by a service health event.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. Name of the resource using the form
+   *   `organizations/{organization_id}/locations/global/organizationImpacts/{organization_impact_id}`.
+   *
+   *   `organization_id` - ID (number) of the organization that contains the
+   *   event. To get your `organization_id`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
+   *   `organization_impact_id` - ID of the [OrganizationImpact
+   *   resource](/service-health/docs/reference/rest/v1beta/organizations.locations.organizationImpacts#OrganizationImpact).
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.servicehealth.v1.OrganizationImpact|OrganizationImpact}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/service_health.get_organization_impact.js</caption>
+   * region_tag:servicehealth_v1_generated_ServiceHealth_GetOrganizationImpact_async
+   */
   getOrganizationImpact(
-      request?: protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IOrganizationImpact,
-        protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact,
+      (
+        | protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  >;
   getOrganizationImpact(
-      request: protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.servicehealth.v1.IOrganizationImpact,
-          protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact,
+      | protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getOrganizationImpact(
-      request: protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest,
-      callback: Callback<
-          protos.google.cloud.servicehealth.v1.IOrganizationImpact,
-          protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest,
+    callback: Callback<
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact,
+      | protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getOrganizationImpact(
-      request?: protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.servicehealth.v1.IOrganizationImpact,
-          protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.servicehealth.v1.IOrganizationImpact,
-          protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IOrganizationImpact,
-        protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact,
+      | protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest
+      | null
+      | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact,
+      (
+        | protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest
+        | undefined
+      ),
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getOrganizationImpact request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.servicehealth.v1.IOrganizationImpact,
-        protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.servicehealth.v1.IOrganizationImpact,
+          | protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getOrganizationImpact response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getOrganizationImpact(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.servicehealth.v1.IOrganizationImpact,
-        protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getOrganizationImpact response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getOrganizationImpact(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.servicehealth.v1.IOrganizationImpact,
+          (
+            | protos.google.cloud.servicehealth.v1.IGetOrganizationImpactRequest
+            | undefined
+          ),
+          {} | undefined,
+        ]) => {
+          this._log.info('getOrganizationImpact response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
 
- /**
- * Lists events under a given project and location.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. Parent value using the form
- *   `projects/{project_id}/locations/{location}/events`.
- *
- *   `project_id` - ID of the project for which to list service health
- *   events.
- *   `location` - The location to get the service health events from.
- *   To retrieve service health events of category = INCIDENT, use `location` =
- *   `global`.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of events that should be returned.  Acceptable
- *   values are 1 to 100, inclusive. (The default value is 10.) If more results
- *   are available, the service returns a next_page_token that you can use to
- *   get the next page of results in subsequent list requests. The service may
- *   return fewer events than the requested page_size.
- * @param {string} [request.pageToken]
- *   Optional. A token identifying a page of results the server should return.
- *   Provide Page token returned by a previous `ListEvents` call to retrieve the
- *   next page of results. When paginating, all other parameters provided to
- *   `ListEvents` must match the call that provided the page token.
- * @param {string} [request.filter]
- *   Optional. A filter expression that filters resources listed in the
- *   response. The expression takes the following forms: <br>
- *   *   field=value for `category` and `state`<br>
- *   *   field &lt;, >, &lt;=, or >= value for `update_time` <br>
- *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`,
- *   `event_impacts.product.product_name:"Eventarc"`
- *   <br>
- *
- *   Multiple filter queries are separated by spaces. Example:
- *   `category=INCIDENT state=ACTIVE`.
- *
- *   By default, each expression is an AND expression. However, you can include
- *   AND and OR expressions explicitly.
- *
- *   Filter is supported for the following fields: `category`, `state`,
- *   `update_time`, `event_impacts.product.product_name`
- * @param {google.cloud.servicehealth.v1.EventView} [request.view]
- *   Optional. Event fields to include in response.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is Array of {@link protos.google.cloud.servicehealth.v1.Event|Event}.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed and will merge results from all the pages into this array.
- *   Note that it can affect your quota.
- *   We recommend using `listEventsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Lists events under a given project and location.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. Parent value using the form
+   *   `projects/{project_id}/locations/{location}/events`.
+   *
+   *   `project_id` - ID of the project for which to list service health
+   *   events.
+   *   `location` - The location to get the service health events from.
+   *   To retrieve service health events of category = INCIDENT, use `location` =
+   *   `global`.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of events that should be returned.  Acceptable
+   *   values are 1 to 100, inclusive. (The default value is 10.) If more results
+   *   are available, the service returns a next_page_token that you can use to
+   *   get the next page of results in subsequent list requests. The service may
+   *   return fewer events than the requested page_size.
+   * @param {string} [request.pageToken]
+   *   Optional. A token identifying a page of results the server should return.
+   *   Provide Page token returned by a previous `ListEvents` call to retrieve the
+   *   next page of results. When paginating, all other parameters provided to
+   *   `ListEvents` must match the call that provided the page token.
+   * @param {string} [request.filter]
+   *   Optional. A filter expression that filters resources listed in the
+   *   response. The expression takes the following forms: <br>
+   *   *   field=value for `category` and `state`<br>
+   *   *   field &lt;, >, &lt;=, or >= value for `update_time` <br>
+   *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`,
+   *   `event_impacts.product.product_name:"Eventarc"`
+   *   <br>
+   *
+   *   Multiple filter queries are separated by spaces. Example:
+   *   `category=INCIDENT state=ACTIVE`.
+   *
+   *   By default, each expression is an AND expression. However, you can include
+   *   AND and OR expressions explicitly.
+   *
+   *   Filter is supported for the following fields: `category`, `state`,
+   *   `update_time`, `event_impacts.product.product_name`
+   * @param {google.cloud.servicehealth.v1.EventView} [request.view]
+   *   Optional. Event fields to include in response.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is Array of {@link protos.google.cloud.servicehealth.v1.Event|Event}.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed and will merge results from all the pages into this array.
+   *   Note that it can affect your quota.
+   *   We recommend using `listEventsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listEvents(
-      request?: protos.google.cloud.servicehealth.v1.IListEventsRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IEvent[],
-        protos.google.cloud.servicehealth.v1.IListEventsRequest|null,
-        protos.google.cloud.servicehealth.v1.IListEventsResponse
-      ]>;
+    request?: protos.google.cloud.servicehealth.v1.IListEventsRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IEvent[],
+      protos.google.cloud.servicehealth.v1.IListEventsRequest | null,
+      protos.google.cloud.servicehealth.v1.IListEventsResponse,
+    ]
+  >;
   listEvents(
-      request: protos.google.cloud.servicehealth.v1.IListEventsRequest,
-      options: CallOptions,
-      callback: PaginationCallback<
-          protos.google.cloud.servicehealth.v1.IListEventsRequest,
-          protos.google.cloud.servicehealth.v1.IListEventsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IEvent>): void;
+    request: protos.google.cloud.servicehealth.v1.IListEventsRequest,
+    options: CallOptions,
+    callback: PaginationCallback<
+      protos.google.cloud.servicehealth.v1.IListEventsRequest,
+      | protos.google.cloud.servicehealth.v1.IListEventsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicehealth.v1.IEvent
+    >,
+  ): void;
   listEvents(
-      request: protos.google.cloud.servicehealth.v1.IListEventsRequest,
-      callback: PaginationCallback<
-          protos.google.cloud.servicehealth.v1.IListEventsRequest,
-          protos.google.cloud.servicehealth.v1.IListEventsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IEvent>): void;
+    request: protos.google.cloud.servicehealth.v1.IListEventsRequest,
+    callback: PaginationCallback<
+      protos.google.cloud.servicehealth.v1.IListEventsRequest,
+      | protos.google.cloud.servicehealth.v1.IListEventsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicehealth.v1.IEvent
+    >,
+  ): void;
   listEvents(
-      request?: protos.google.cloud.servicehealth.v1.IListEventsRequest,
-      optionsOrCallback?: CallOptions|PaginationCallback<
-          protos.google.cloud.servicehealth.v1.IListEventsRequest,
-          protos.google.cloud.servicehealth.v1.IListEventsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IEvent>,
-      callback?: PaginationCallback<
+    request?: protos.google.cloud.servicehealth.v1.IListEventsRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | PaginationCallback<
           protos.google.cloud.servicehealth.v1.IListEventsRequest,
-          protos.google.cloud.servicehealth.v1.IListEventsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IEvent>):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IEvent[],
-        protos.google.cloud.servicehealth.v1.IListEventsRequest|null,
-        protos.google.cloud.servicehealth.v1.IListEventsResponse
-      ]>|void {
+          | protos.google.cloud.servicehealth.v1.IListEventsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicehealth.v1.IEvent
+        >,
+    callback?: PaginationCallback<
+      protos.google.cloud.servicehealth.v1.IListEventsRequest,
+      | protos.google.cloud.servicehealth.v1.IListEventsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicehealth.v1.IEvent
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IEvent[],
+      protos.google.cloud.servicehealth.v1.IListEventsRequest | null,
+      protos.google.cloud.servicehealth.v1.IListEventsResponse,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: PaginationCallback<
-      protos.google.cloud.servicehealth.v1.IListEventsRequest,
-      protos.google.cloud.servicehealth.v1.IListEventsResponse|null|undefined,
-      protos.google.cloud.servicehealth.v1.IEvent>|undefined = callback
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.cloud.servicehealth.v1.IListEventsRequest,
+          | protos.google.cloud.servicehealth.v1.IListEventsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicehealth.v1.IEvent
+        >
+      | undefined = callback
       ? (error, values, nextPageRequest, rawResponse) => {
           this._log.info('listEvents values %j', values);
           callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
@@ -781,293 +997,322 @@ export class ServiceHealthClient {
     this._log.info('listEvents request %j', request);
     return this.innerApiCalls
       .listEvents(request, options, wrappedCallback)
-      ?.then(([response, input, output]: [
-        protos.google.cloud.servicehealth.v1.IEvent[],
-        protos.google.cloud.servicehealth.v1.IListEventsRequest|null,
-        protos.google.cloud.servicehealth.v1.IListEventsResponse
-      ]) => {
-        this._log.info('listEvents values %j', response);
-        return [response, input, output];
-      });
+      ?.then(
+        ([response, input, output]: [
+          protos.google.cloud.servicehealth.v1.IEvent[],
+          protos.google.cloud.servicehealth.v1.IListEventsRequest | null,
+          protos.google.cloud.servicehealth.v1.IListEventsResponse,
+        ]) => {
+          this._log.info('listEvents values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
-/**
- * Equivalent to `listEvents`, but returns a NodeJS Stream object.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. Parent value using the form
- *   `projects/{project_id}/locations/{location}/events`.
- *
- *   `project_id` - ID of the project for which to list service health
- *   events.
- *   `location` - The location to get the service health events from.
- *   To retrieve service health events of category = INCIDENT, use `location` =
- *   `global`.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of events that should be returned.  Acceptable
- *   values are 1 to 100, inclusive. (The default value is 10.) If more results
- *   are available, the service returns a next_page_token that you can use to
- *   get the next page of results in subsequent list requests. The service may
- *   return fewer events than the requested page_size.
- * @param {string} [request.pageToken]
- *   Optional. A token identifying a page of results the server should return.
- *   Provide Page token returned by a previous `ListEvents` call to retrieve the
- *   next page of results. When paginating, all other parameters provided to
- *   `ListEvents` must match the call that provided the page token.
- * @param {string} [request.filter]
- *   Optional. A filter expression that filters resources listed in the
- *   response. The expression takes the following forms: <br>
- *   *   field=value for `category` and `state`<br>
- *   *   field &lt;, >, &lt;=, or >= value for `update_time` <br>
- *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`,
- *   `event_impacts.product.product_name:"Eventarc"`
- *   <br>
- *
- *   Multiple filter queries are separated by spaces. Example:
- *   `category=INCIDENT state=ACTIVE`.
- *
- *   By default, each expression is an AND expression. However, you can include
- *   AND and OR expressions explicitly.
- *
- *   Filter is supported for the following fields: `category`, `state`,
- *   `update_time`, `event_impacts.product.product_name`
- * @param {google.cloud.servicehealth.v1.EventView} [request.view]
- *   Optional. Event fields to include in response.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Stream}
- *   An object stream which emits an object representing {@link protos.google.cloud.servicehealth.v1.Event|Event} on 'data' event.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed. Note that it can affect your quota.
- *   We recommend using `listEventsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Equivalent to `listEvents`, but returns a NodeJS Stream object.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. Parent value using the form
+   *   `projects/{project_id}/locations/{location}/events`.
+   *
+   *   `project_id` - ID of the project for which to list service health
+   *   events.
+   *   `location` - The location to get the service health events from.
+   *   To retrieve service health events of category = INCIDENT, use `location` =
+   *   `global`.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of events that should be returned.  Acceptable
+   *   values are 1 to 100, inclusive. (The default value is 10.) If more results
+   *   are available, the service returns a next_page_token that you can use to
+   *   get the next page of results in subsequent list requests. The service may
+   *   return fewer events than the requested page_size.
+   * @param {string} [request.pageToken]
+   *   Optional. A token identifying a page of results the server should return.
+   *   Provide Page token returned by a previous `ListEvents` call to retrieve the
+   *   next page of results. When paginating, all other parameters provided to
+   *   `ListEvents` must match the call that provided the page token.
+   * @param {string} [request.filter]
+   *   Optional. A filter expression that filters resources listed in the
+   *   response. The expression takes the following forms: <br>
+   *   *   field=value for `category` and `state`<br>
+   *   *   field &lt;, >, &lt;=, or >= value for `update_time` <br>
+   *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`,
+   *   `event_impacts.product.product_name:"Eventarc"`
+   *   <br>
+   *
+   *   Multiple filter queries are separated by spaces. Example:
+   *   `category=INCIDENT state=ACTIVE`.
+   *
+   *   By default, each expression is an AND expression. However, you can include
+   *   AND and OR expressions explicitly.
+   *
+   *   Filter is supported for the following fields: `category`, `state`,
+   *   `update_time`, `event_impacts.product.product_name`
+   * @param {google.cloud.servicehealth.v1.EventView} [request.view]
+   *   Optional. Event fields to include in response.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Stream}
+   *   An object stream which emits an object representing {@link protos.google.cloud.servicehealth.v1.Event|Event} on 'data' event.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed. Note that it can affect your quota.
+   *   We recommend using `listEventsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listEventsStream(
-      request?: protos.google.cloud.servicehealth.v1.IListEventsRequest,
-      options?: CallOptions):
-    Transform{
+    request?: protos.google.cloud.servicehealth.v1.IListEventsRequest,
+    options?: CallOptions,
+  ): Transform {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listEvents'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listEvents stream %j', request);
     return this.descriptors.page.listEvents.createStream(
       this.innerApiCalls.listEvents as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
-/**
- * Equivalent to `listEvents`, but returns an iterable object.
- *
- * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. Parent value using the form
- *   `projects/{project_id}/locations/{location}/events`.
- *
- *   `project_id` - ID of the project for which to list service health
- *   events.
- *   `location` - The location to get the service health events from.
- *   To retrieve service health events of category = INCIDENT, use `location` =
- *   `global`.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of events that should be returned.  Acceptable
- *   values are 1 to 100, inclusive. (The default value is 10.) If more results
- *   are available, the service returns a next_page_token that you can use to
- *   get the next page of results in subsequent list requests. The service may
- *   return fewer events than the requested page_size.
- * @param {string} [request.pageToken]
- *   Optional. A token identifying a page of results the server should return.
- *   Provide Page token returned by a previous `ListEvents` call to retrieve the
- *   next page of results. When paginating, all other parameters provided to
- *   `ListEvents` must match the call that provided the page token.
- * @param {string} [request.filter]
- *   Optional. A filter expression that filters resources listed in the
- *   response. The expression takes the following forms: <br>
- *   *   field=value for `category` and `state`<br>
- *   *   field &lt;, >, &lt;=, or >= value for `update_time` <br>
- *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`,
- *   `event_impacts.product.product_name:"Eventarc"`
- *   <br>
- *
- *   Multiple filter queries are separated by spaces. Example:
- *   `category=INCIDENT state=ACTIVE`.
- *
- *   By default, each expression is an AND expression. However, you can include
- *   AND and OR expressions explicitly.
- *
- *   Filter is supported for the following fields: `category`, `state`,
- *   `update_time`, `event_impacts.product.product_name`
- * @param {google.cloud.servicehealth.v1.EventView} [request.view]
- *   Optional. Event fields to include in response.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Object}
- *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
- *   When you iterate the returned iterable, each element will be an object representing
- *   {@link protos.google.cloud.servicehealth.v1.Event|Event}. The API will be called under the hood as needed, once per the page,
- *   so you can stop the iteration when you don't need more results.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/service_health.list_events.js</caption>
- * region_tag:servicehealth_v1_generated_ServiceHealth_ListEvents_async
- */
+  /**
+   * Equivalent to `listEvents`, but returns an iterable object.
+   *
+   * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. Parent value using the form
+   *   `projects/{project_id}/locations/{location}/events`.
+   *
+   *   `project_id` - ID of the project for which to list service health
+   *   events.
+   *   `location` - The location to get the service health events from.
+   *   To retrieve service health events of category = INCIDENT, use `location` =
+   *   `global`.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of events that should be returned.  Acceptable
+   *   values are 1 to 100, inclusive. (The default value is 10.) If more results
+   *   are available, the service returns a next_page_token that you can use to
+   *   get the next page of results in subsequent list requests. The service may
+   *   return fewer events than the requested page_size.
+   * @param {string} [request.pageToken]
+   *   Optional. A token identifying a page of results the server should return.
+   *   Provide Page token returned by a previous `ListEvents` call to retrieve the
+   *   next page of results. When paginating, all other parameters provided to
+   *   `ListEvents` must match the call that provided the page token.
+   * @param {string} [request.filter]
+   *   Optional. A filter expression that filters resources listed in the
+   *   response. The expression takes the following forms: <br>
+   *   *   field=value for `category` and `state`<br>
+   *   *   field &lt;, >, &lt;=, or >= value for `update_time` <br>
+   *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`,
+   *   `event_impacts.product.product_name:"Eventarc"`
+   *   <br>
+   *
+   *   Multiple filter queries are separated by spaces. Example:
+   *   `category=INCIDENT state=ACTIVE`.
+   *
+   *   By default, each expression is an AND expression. However, you can include
+   *   AND and OR expressions explicitly.
+   *
+   *   Filter is supported for the following fields: `category`, `state`,
+   *   `update_time`, `event_impacts.product.product_name`
+   * @param {google.cloud.servicehealth.v1.EventView} [request.view]
+   *   Optional. Event fields to include in response.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Object}
+   *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+   *   When you iterate the returned iterable, each element will be an object representing
+   *   {@link protos.google.cloud.servicehealth.v1.Event|Event}. The API will be called under the hood as needed, once per the page,
+   *   so you can stop the iteration when you don't need more results.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/service_health.list_events.js</caption>
+   * region_tag:servicehealth_v1_generated_ServiceHealth_ListEvents_async
+   */
   listEventsAsync(
-      request?: protos.google.cloud.servicehealth.v1.IListEventsRequest,
-      options?: CallOptions):
-    AsyncIterable<protos.google.cloud.servicehealth.v1.IEvent>{
+    request?: protos.google.cloud.servicehealth.v1.IListEventsRequest,
+    options?: CallOptions,
+  ): AsyncIterable<protos.google.cloud.servicehealth.v1.IEvent> {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listEvents'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listEvents iterate %j', request);
     return this.descriptors.page.listEvents.asyncIterate(
       this.innerApiCalls['listEvents'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable<protos.google.cloud.servicehealth.v1.IEvent>;
   }
- /**
- * Lists organization events under a given organization and location.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. Parent value using the form
- *   `organizations/{organization_id}/locations/{location}/organizationEvents`.
- *
- *   `organization_id` - ID (number) of the project that contains the event. To
- *   get your `organization_id`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
- *   `location` - The location to get the service health events from. To
- *   retrieve service health events of category = INCIDENT, use `location` =
- *   `global`.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of events that should be returned.  Acceptable
- *   values are `1` to `100`, inclusive. (The default value is `10`.) If more
- *   results are available, the service returns a `next_page_token` that you can
- *   use to get the next page of results in subsequent list requests. The
- *   service may return fewer events than the requested `page_size`.
- * @param {string} [request.pageToken]
- *   Optional. A token identifying a page of results the server should return.
- *
- *   Provide Page token returned by a previous `ListOrganizationEvents` call to
- *   retrieve the next page of results.
- *
- *   When paginating, all other parameters provided to
- *   `ListOrganizationEvents` must match the call that provided the page token.
- * @param {string} [request.filter]
- *   Optional. A filter expression that filters resources listed in the
- *   response. The expression takes the following forms:
- *
- *   *   field=value for `category` and `state`
- *   *   field &lt;, >, &lt;=, or >= value for `update_time`
- *
- *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`
- *
- *   Multiple filter queries are space-separated. Example:
- *   `category=INCIDENT state=ACTIVE`.
- *
- *   By default, each expression is an AND expression. However, you can include
- *   AND and OR expressions explicitly.
- *
- *   Filter is supported for the following fields: `category`, `state`,
- *   `update_time`
- * @param {google.cloud.servicehealth.v1.OrganizationEventView} [request.view]
- *   Optional. OrganizationEvent fields to include in response.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is Array of {@link protos.google.cloud.servicehealth.v1.OrganizationEvent|OrganizationEvent}.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed and will merge results from all the pages into this array.
- *   Note that it can affect your quota.
- *   We recommend using `listOrganizationEventsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Lists organization events under a given organization and location.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. Parent value using the form
+   *   `organizations/{organization_id}/locations/{location}/organizationEvents`.
+   *
+   *   `organization_id` - ID (number) of the project that contains the event. To
+   *   get your `organization_id`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
+   *   `location` - The location to get the service health events from. To
+   *   retrieve service health events of category = INCIDENT, use `location` =
+   *   `global`.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of events that should be returned.  Acceptable
+   *   values are `1` to `100`, inclusive. (The default value is `10`.) If more
+   *   results are available, the service returns a `next_page_token` that you can
+   *   use to get the next page of results in subsequent list requests. The
+   *   service may return fewer events than the requested `page_size`.
+   * @param {string} [request.pageToken]
+   *   Optional. A token identifying a page of results the server should return.
+   *
+   *   Provide Page token returned by a previous `ListOrganizationEvents` call to
+   *   retrieve the next page of results.
+   *
+   *   When paginating, all other parameters provided to
+   *   `ListOrganizationEvents` must match the call that provided the page token.
+   * @param {string} [request.filter]
+   *   Optional. A filter expression that filters resources listed in the
+   *   response. The expression takes the following forms:
+   *
+   *   *   field=value for `category` and `state`
+   *   *   field &lt;, >, &lt;=, or >= value for `update_time`
+   *
+   *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`
+   *
+   *   Multiple filter queries are space-separated. Example:
+   *   `category=INCIDENT state=ACTIVE`.
+   *
+   *   By default, each expression is an AND expression. However, you can include
+   *   AND and OR expressions explicitly.
+   *
+   *   Filter is supported for the following fields: `category`, `state`,
+   *   `update_time`
+   * @param {google.cloud.servicehealth.v1.OrganizationEventView} [request.view]
+   *   Optional. OrganizationEvent fields to include in response.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is Array of {@link protos.google.cloud.servicehealth.v1.OrganizationEvent|OrganizationEvent}.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed and will merge results from all the pages into this array.
+   *   Note that it can affect your quota.
+   *   We recommend using `listOrganizationEventsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listOrganizationEvents(
-      request?: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IOrganizationEvent[],
-        protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest|null,
-        protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse
-      ]>;
+    request?: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent[],
+      protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest | null,
+      protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse,
+    ]
+  >;
   listOrganizationEvents(
-      request: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-      options: CallOptions,
-      callback: PaginationCallback<
-          protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-          protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IOrganizationEvent>): void;
+    request: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+    options: CallOptions,
+    callback: PaginationCallback<
+      protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+      | protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent
+    >,
+  ): void;
   listOrganizationEvents(
-      request: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-      callback: PaginationCallback<
-          protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-          protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IOrganizationEvent>): void;
+    request: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+    callback: PaginationCallback<
+      protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+      | protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent
+    >,
+  ): void;
   listOrganizationEvents(
-      request?: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-      optionsOrCallback?: CallOptions|PaginationCallback<
+    request?: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | PaginationCallback<
           protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-          protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IOrganizationEvent>,
-      callback?: PaginationCallback<
-          protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-          protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IOrganizationEvent>):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IOrganizationEvent[],
-        protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest|null,
-        protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse
-      ]>|void {
+          | protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicehealth.v1.IOrganizationEvent
+        >,
+    callback?: PaginationCallback<
+      protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+      | protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IOrganizationEvent[],
+      protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest | null,
+      protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: PaginationCallback<
-      protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-      protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse|null|undefined,
-      protos.google.cloud.servicehealth.v1.IOrganizationEvent>|undefined = callback
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+          | protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicehealth.v1.IOrganizationEvent
+        >
+      | undefined = callback
       ? (error, values, nextPageRequest, rawResponse) => {
           this._log.info('listOrganizationEvents values %j', values);
           callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
@@ -1076,302 +1321,331 @@ export class ServiceHealthClient {
     this._log.info('listOrganizationEvents request %j', request);
     return this.innerApiCalls
       .listOrganizationEvents(request, options, wrappedCallback)
-      ?.then(([response, input, output]: [
-        protos.google.cloud.servicehealth.v1.IOrganizationEvent[],
-        protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest|null,
-        protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse
-      ]) => {
-        this._log.info('listOrganizationEvents values %j', response);
-        return [response, input, output];
-      });
+      ?.then(
+        ([response, input, output]: [
+          protos.google.cloud.servicehealth.v1.IOrganizationEvent[],
+          protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest | null,
+          protos.google.cloud.servicehealth.v1.IListOrganizationEventsResponse,
+        ]) => {
+          this._log.info('listOrganizationEvents values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
-/**
- * Equivalent to `listOrganizationEvents`, but returns a NodeJS Stream object.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. Parent value using the form
- *   `organizations/{organization_id}/locations/{location}/organizationEvents`.
- *
- *   `organization_id` - ID (number) of the project that contains the event. To
- *   get your `organization_id`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
- *   `location` - The location to get the service health events from. To
- *   retrieve service health events of category = INCIDENT, use `location` =
- *   `global`.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of events that should be returned.  Acceptable
- *   values are `1` to `100`, inclusive. (The default value is `10`.) If more
- *   results are available, the service returns a `next_page_token` that you can
- *   use to get the next page of results in subsequent list requests. The
- *   service may return fewer events than the requested `page_size`.
- * @param {string} [request.pageToken]
- *   Optional. A token identifying a page of results the server should return.
- *
- *   Provide Page token returned by a previous `ListOrganizationEvents` call to
- *   retrieve the next page of results.
- *
- *   When paginating, all other parameters provided to
- *   `ListOrganizationEvents` must match the call that provided the page token.
- * @param {string} [request.filter]
- *   Optional. A filter expression that filters resources listed in the
- *   response. The expression takes the following forms:
- *
- *   *   field=value for `category` and `state`
- *   *   field &lt;, >, &lt;=, or >= value for `update_time`
- *
- *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`
- *
- *   Multiple filter queries are space-separated. Example:
- *   `category=INCIDENT state=ACTIVE`.
- *
- *   By default, each expression is an AND expression. However, you can include
- *   AND and OR expressions explicitly.
- *
- *   Filter is supported for the following fields: `category`, `state`,
- *   `update_time`
- * @param {google.cloud.servicehealth.v1.OrganizationEventView} [request.view]
- *   Optional. OrganizationEvent fields to include in response.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Stream}
- *   An object stream which emits an object representing {@link protos.google.cloud.servicehealth.v1.OrganizationEvent|OrganizationEvent} on 'data' event.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed. Note that it can affect your quota.
- *   We recommend using `listOrganizationEventsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Equivalent to `listOrganizationEvents`, but returns a NodeJS Stream object.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. Parent value using the form
+   *   `organizations/{organization_id}/locations/{location}/organizationEvents`.
+   *
+   *   `organization_id` - ID (number) of the project that contains the event. To
+   *   get your `organization_id`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
+   *   `location` - The location to get the service health events from. To
+   *   retrieve service health events of category = INCIDENT, use `location` =
+   *   `global`.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of events that should be returned.  Acceptable
+   *   values are `1` to `100`, inclusive. (The default value is `10`.) If more
+   *   results are available, the service returns a `next_page_token` that you can
+   *   use to get the next page of results in subsequent list requests. The
+   *   service may return fewer events than the requested `page_size`.
+   * @param {string} [request.pageToken]
+   *   Optional. A token identifying a page of results the server should return.
+   *
+   *   Provide Page token returned by a previous `ListOrganizationEvents` call to
+   *   retrieve the next page of results.
+   *
+   *   When paginating, all other parameters provided to
+   *   `ListOrganizationEvents` must match the call that provided the page token.
+   * @param {string} [request.filter]
+   *   Optional. A filter expression that filters resources listed in the
+   *   response. The expression takes the following forms:
+   *
+   *   *   field=value for `category` and `state`
+   *   *   field &lt;, >, &lt;=, or >= value for `update_time`
+   *
+   *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`
+   *
+   *   Multiple filter queries are space-separated. Example:
+   *   `category=INCIDENT state=ACTIVE`.
+   *
+   *   By default, each expression is an AND expression. However, you can include
+   *   AND and OR expressions explicitly.
+   *
+   *   Filter is supported for the following fields: `category`, `state`,
+   *   `update_time`
+   * @param {google.cloud.servicehealth.v1.OrganizationEventView} [request.view]
+   *   Optional. OrganizationEvent fields to include in response.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Stream}
+   *   An object stream which emits an object representing {@link protos.google.cloud.servicehealth.v1.OrganizationEvent|OrganizationEvent} on 'data' event.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed. Note that it can affect your quota.
+   *   We recommend using `listOrganizationEventsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listOrganizationEventsStream(
-      request?: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-      options?: CallOptions):
-    Transform{
+    request?: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+    options?: CallOptions,
+  ): Transform {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listOrganizationEvents'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listOrganizationEvents stream %j', request);
     return this.descriptors.page.listOrganizationEvents.createStream(
       this.innerApiCalls.listOrganizationEvents as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
-/**
- * Equivalent to `listOrganizationEvents`, but returns an iterable object.
- *
- * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. Parent value using the form
- *   `organizations/{organization_id}/locations/{location}/organizationEvents`.
- *
- *   `organization_id` - ID (number) of the project that contains the event. To
- *   get your `organization_id`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
- *   `location` - The location to get the service health events from. To
- *   retrieve service health events of category = INCIDENT, use `location` =
- *   `global`.
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of events that should be returned.  Acceptable
- *   values are `1` to `100`, inclusive. (The default value is `10`.) If more
- *   results are available, the service returns a `next_page_token` that you can
- *   use to get the next page of results in subsequent list requests. The
- *   service may return fewer events than the requested `page_size`.
- * @param {string} [request.pageToken]
- *   Optional. A token identifying a page of results the server should return.
- *
- *   Provide Page token returned by a previous `ListOrganizationEvents` call to
- *   retrieve the next page of results.
- *
- *   When paginating, all other parameters provided to
- *   `ListOrganizationEvents` must match the call that provided the page token.
- * @param {string} [request.filter]
- *   Optional. A filter expression that filters resources listed in the
- *   response. The expression takes the following forms:
- *
- *   *   field=value for `category` and `state`
- *   *   field &lt;, >, &lt;=, or >= value for `update_time`
- *
- *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`
- *
- *   Multiple filter queries are space-separated. Example:
- *   `category=INCIDENT state=ACTIVE`.
- *
- *   By default, each expression is an AND expression. However, you can include
- *   AND and OR expressions explicitly.
- *
- *   Filter is supported for the following fields: `category`, `state`,
- *   `update_time`
- * @param {google.cloud.servicehealth.v1.OrganizationEventView} [request.view]
- *   Optional. OrganizationEvent fields to include in response.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Object}
- *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
- *   When you iterate the returned iterable, each element will be an object representing
- *   {@link protos.google.cloud.servicehealth.v1.OrganizationEvent|OrganizationEvent}. The API will be called under the hood as needed, once per the page,
- *   so you can stop the iteration when you don't need more results.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/service_health.list_organization_events.js</caption>
- * region_tag:servicehealth_v1_generated_ServiceHealth_ListOrganizationEvents_async
- */
+  /**
+   * Equivalent to `listOrganizationEvents`, but returns an iterable object.
+   *
+   * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. Parent value using the form
+   *   `organizations/{organization_id}/locations/{location}/organizationEvents`.
+   *
+   *   `organization_id` - ID (number) of the project that contains the event. To
+   *   get your `organization_id`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).<br>
+   *   `location` - The location to get the service health events from. To
+   *   retrieve service health events of category = INCIDENT, use `location` =
+   *   `global`.
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of events that should be returned.  Acceptable
+   *   values are `1` to `100`, inclusive. (The default value is `10`.) If more
+   *   results are available, the service returns a `next_page_token` that you can
+   *   use to get the next page of results in subsequent list requests. The
+   *   service may return fewer events than the requested `page_size`.
+   * @param {string} [request.pageToken]
+   *   Optional. A token identifying a page of results the server should return.
+   *
+   *   Provide Page token returned by a previous `ListOrganizationEvents` call to
+   *   retrieve the next page of results.
+   *
+   *   When paginating, all other parameters provided to
+   *   `ListOrganizationEvents` must match the call that provided the page token.
+   * @param {string} [request.filter]
+   *   Optional. A filter expression that filters resources listed in the
+   *   response. The expression takes the following forms:
+   *
+   *   *   field=value for `category` and `state`
+   *   *   field &lt;, >, &lt;=, or >= value for `update_time`
+   *
+   *   Examples: `category=INCIDENT`, `update_time>="2000-01-01T11:30:00-04:00"`
+   *
+   *   Multiple filter queries are space-separated. Example:
+   *   `category=INCIDENT state=ACTIVE`.
+   *
+   *   By default, each expression is an AND expression. However, you can include
+   *   AND and OR expressions explicitly.
+   *
+   *   Filter is supported for the following fields: `category`, `state`,
+   *   `update_time`
+   * @param {google.cloud.servicehealth.v1.OrganizationEventView} [request.view]
+   *   Optional. OrganizationEvent fields to include in response.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Object}
+   *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+   *   When you iterate the returned iterable, each element will be an object representing
+   *   {@link protos.google.cloud.servicehealth.v1.OrganizationEvent|OrganizationEvent}. The API will be called under the hood as needed, once per the page,
+   *   so you can stop the iteration when you don't need more results.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/service_health.list_organization_events.js</caption>
+   * region_tag:servicehealth_v1_generated_ServiceHealth_ListOrganizationEvents_async
+   */
   listOrganizationEventsAsync(
-      request?: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
-      options?: CallOptions):
-    AsyncIterable<protos.google.cloud.servicehealth.v1.IOrganizationEvent>{
+    request?: protos.google.cloud.servicehealth.v1.IListOrganizationEventsRequest,
+    options?: CallOptions,
+  ): AsyncIterable<protos.google.cloud.servicehealth.v1.IOrganizationEvent> {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listOrganizationEvents'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listOrganizationEvents iterate %j', request);
     return this.descriptors.page.listOrganizationEvents.asyncIterate(
       this.innerApiCalls['listOrganizationEvents'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable<protos.google.cloud.servicehealth.v1.IOrganizationEvent>;
   }
- /**
- * Lists assets impacted by organization events under a given organization and
- * location.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. Parent value using the form
- *   `organizations/{organization_id}/locations/{location}/organizationImpacts`.
- *
- *   `organization_id` - ID (number) of the project that contains the event. To
- *   get your `organization_id`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of events that should be returned. Acceptable
- *   values are `1` to `100`, inclusive. The default value is `10`.
- *
- *    If more results are available, the service returns a
- *   `next_page_token` that can be used to get the next page of results in
- *   subsequent list requests. The service may return fewer
- *   [impacts](/service-health/docs/reference/rest/v1beta/organizations.locations.organizationImpacts#OrganizationImpact)
- *   than the requested `page_size`.
- * @param {string} [request.pageToken]
- *   Optional. A token identifying a page of results the server should return.
- *
- *   Provide `page_token` returned by a previous `ListOrganizationImpacts` call
- *   to retrieve the next page of results.
- *
- *   When paginating, all other parameters provided to `ListOrganizationImpacts`
- *   must match the call that provided the page token.
- * @param {string} [request.filter]
- *   Optional. A filter expression that filters resources listed in the
- *   response. The expression is in the form of `field:value` for checking if a
- *   repeated field contains a value.
- *
- *   Example:
- *   `events:organizations%2F{organization_id}%2Flocations%2Fglobal%2ForganizationEvents%2Fevent-id`
- *
- *   To get your `{organization_id}`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
- *
- *   Multiple filter queries are separated by spaces.
- *
- *   By default, each expression is an AND expression. However, you can include
- *   AND and OR expressions explicitly.
- *   Filter is supported for the following fields: `events`.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is Array of {@link protos.google.cloud.servicehealth.v1.OrganizationImpact|OrganizationImpact}.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed and will merge results from all the pages into this array.
- *   Note that it can affect your quota.
- *   We recommend using `listOrganizationImpactsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Lists assets impacted by organization events under a given organization and
+   * location.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. Parent value using the form
+   *   `organizations/{organization_id}/locations/{location}/organizationImpacts`.
+   *
+   *   `organization_id` - ID (number) of the project that contains the event. To
+   *   get your `organization_id`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of events that should be returned. Acceptable
+   *   values are `1` to `100`, inclusive. The default value is `10`.
+   *
+   *    If more results are available, the service returns a
+   *   `next_page_token` that can be used to get the next page of results in
+   *   subsequent list requests. The service may return fewer
+   *   [impacts](/service-health/docs/reference/rest/v1beta/organizations.locations.organizationImpacts#OrganizationImpact)
+   *   than the requested `page_size`.
+   * @param {string} [request.pageToken]
+   *   Optional. A token identifying a page of results the server should return.
+   *
+   *   Provide `page_token` returned by a previous `ListOrganizationImpacts` call
+   *   to retrieve the next page of results.
+   *
+   *   When paginating, all other parameters provided to `ListOrganizationImpacts`
+   *   must match the call that provided the page token.
+   * @param {string} [request.filter]
+   *   Optional. A filter expression that filters resources listed in the
+   *   response. The expression is in the form of `field:value` for checking if a
+   *   repeated field contains a value.
+   *
+   *   Example:
+   *   `events:organizations%2F{organization_id}%2Flocations%2Fglobal%2ForganizationEvents%2Fevent-id`
+   *
+   *   To get your `{organization_id}`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
+   *
+   *   Multiple filter queries are separated by spaces.
+   *
+   *   By default, each expression is an AND expression. However, you can include
+   *   AND and OR expressions explicitly.
+   *   Filter is supported for the following fields: `events`.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is Array of {@link protos.google.cloud.servicehealth.v1.OrganizationImpact|OrganizationImpact}.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed and will merge results from all the pages into this array.
+   *   Note that it can affect your quota.
+   *   We recommend using `listOrganizationImpactsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listOrganizationImpacts(
-      request?: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IOrganizationImpact[],
-        protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest|null,
-        protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse
-      ]>;
+    request?: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact[],
+      protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest | null,
+      protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse,
+    ]
+  >;
   listOrganizationImpacts(
-      request: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-      options: CallOptions,
-      callback: PaginationCallback<
-          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IOrganizationImpact>): void;
+    request: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+    options: CallOptions,
+    callback: PaginationCallback<
+      protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+      | protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact
+    >,
+  ): void;
   listOrganizationImpacts(
-      request: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-      callback: PaginationCallback<
-          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IOrganizationImpact>): void;
+    request: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+    callback: PaginationCallback<
+      protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+      | protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact
+    >,
+  ): void;
   listOrganizationImpacts(
-      request?: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-      optionsOrCallback?: CallOptions|PaginationCallback<
-          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IOrganizationImpact>,
-      callback?: PaginationCallback<
+    request?: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | PaginationCallback<
           protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse|null|undefined,
-          protos.google.cloud.servicehealth.v1.IOrganizationImpact>):
-      Promise<[
-        protos.google.cloud.servicehealth.v1.IOrganizationImpact[],
-        protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest|null,
-        protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse
-      ]>|void {
+          | protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicehealth.v1.IOrganizationImpact
+        >,
+    callback?: PaginationCallback<
+      protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+      | protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse
+      | null
+      | undefined,
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.servicehealth.v1.IOrganizationImpact[],
+      protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest | null,
+      protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: PaginationCallback<
-      protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-      protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse|null|undefined,
-      protos.google.cloud.servicehealth.v1.IOrganizationImpact>|undefined = callback
+    const wrappedCallback:
+      | PaginationCallback<
+          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+          | protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse
+          | null
+          | undefined,
+          protos.google.cloud.servicehealth.v1.IOrganizationImpact
+        >
+      | undefined = callback
       ? (error, values, nextPageRequest, rawResponse) => {
           this._log.info('listOrganizationImpacts values %j', values);
           callback!(error, values, nextPageRequest, rawResponse); // We verified callback above.
@@ -1380,181 +1654,186 @@ export class ServiceHealthClient {
     this._log.info('listOrganizationImpacts request %j', request);
     return this.innerApiCalls
       .listOrganizationImpacts(request, options, wrappedCallback)
-      ?.then(([response, input, output]: [
-        protos.google.cloud.servicehealth.v1.IOrganizationImpact[],
-        protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest|null,
-        protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse
-      ]) => {
-        this._log.info('listOrganizationImpacts values %j', response);
-        return [response, input, output];
-      });
+      ?.then(
+        ([response, input, output]: [
+          protos.google.cloud.servicehealth.v1.IOrganizationImpact[],
+          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest | null,
+          protos.google.cloud.servicehealth.v1.IListOrganizationImpactsResponse,
+        ]) => {
+          this._log.info('listOrganizationImpacts values %j', response);
+          return [response, input, output];
+        },
+      );
   }
 
-/**
- * Equivalent to `listOrganizationImpacts`, but returns a NodeJS Stream object.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. Parent value using the form
- *   `organizations/{organization_id}/locations/{location}/organizationImpacts`.
- *
- *   `organization_id` - ID (number) of the project that contains the event. To
- *   get your `organization_id`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of events that should be returned. Acceptable
- *   values are `1` to `100`, inclusive. The default value is `10`.
- *
- *    If more results are available, the service returns a
- *   `next_page_token` that can be used to get the next page of results in
- *   subsequent list requests. The service may return fewer
- *   [impacts](/service-health/docs/reference/rest/v1beta/organizations.locations.organizationImpacts#OrganizationImpact)
- *   than the requested `page_size`.
- * @param {string} [request.pageToken]
- *   Optional. A token identifying a page of results the server should return.
- *
- *   Provide `page_token` returned by a previous `ListOrganizationImpacts` call
- *   to retrieve the next page of results.
- *
- *   When paginating, all other parameters provided to `ListOrganizationImpacts`
- *   must match the call that provided the page token.
- * @param {string} [request.filter]
- *   Optional. A filter expression that filters resources listed in the
- *   response. The expression is in the form of `field:value` for checking if a
- *   repeated field contains a value.
- *
- *   Example:
- *   `events:organizations%2F{organization_id}%2Flocations%2Fglobal%2ForganizationEvents%2Fevent-id`
- *
- *   To get your `{organization_id}`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
- *
- *   Multiple filter queries are separated by spaces.
- *
- *   By default, each expression is an AND expression. However, you can include
- *   AND and OR expressions explicitly.
- *   Filter is supported for the following fields: `events`.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Stream}
- *   An object stream which emits an object representing {@link protos.google.cloud.servicehealth.v1.OrganizationImpact|OrganizationImpact} on 'data' event.
- *   The client library will perform auto-pagination by default: it will call the API as many
- *   times as needed. Note that it can affect your quota.
- *   We recommend using `listOrganizationImpactsAsync()`
- *   method described below for async iteration which you can stop as needed.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- */
+  /**
+   * Equivalent to `listOrganizationImpacts`, but returns a NodeJS Stream object.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. Parent value using the form
+   *   `organizations/{organization_id}/locations/{location}/organizationImpacts`.
+   *
+   *   `organization_id` - ID (number) of the project that contains the event. To
+   *   get your `organization_id`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of events that should be returned. Acceptable
+   *   values are `1` to `100`, inclusive. The default value is `10`.
+   *
+   *    If more results are available, the service returns a
+   *   `next_page_token` that can be used to get the next page of results in
+   *   subsequent list requests. The service may return fewer
+   *   [impacts](/service-health/docs/reference/rest/v1beta/organizations.locations.organizationImpacts#OrganizationImpact)
+   *   than the requested `page_size`.
+   * @param {string} [request.pageToken]
+   *   Optional. A token identifying a page of results the server should return.
+   *
+   *   Provide `page_token` returned by a previous `ListOrganizationImpacts` call
+   *   to retrieve the next page of results.
+   *
+   *   When paginating, all other parameters provided to `ListOrganizationImpacts`
+   *   must match the call that provided the page token.
+   * @param {string} [request.filter]
+   *   Optional. A filter expression that filters resources listed in the
+   *   response. The expression is in the form of `field:value` for checking if a
+   *   repeated field contains a value.
+   *
+   *   Example:
+   *   `events:organizations%2F{organization_id}%2Flocations%2Fglobal%2ForganizationEvents%2Fevent-id`
+   *
+   *   To get your `{organization_id}`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
+   *
+   *   Multiple filter queries are separated by spaces.
+   *
+   *   By default, each expression is an AND expression. However, you can include
+   *   AND and OR expressions explicitly.
+   *   Filter is supported for the following fields: `events`.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Stream}
+   *   An object stream which emits an object representing {@link protos.google.cloud.servicehealth.v1.OrganizationImpact|OrganizationImpact} on 'data' event.
+   *   The client library will perform auto-pagination by default: it will call the API as many
+   *   times as needed. Note that it can affect your quota.
+   *   We recommend using `listOrganizationImpactsAsync()`
+   *   method described below for async iteration which you can stop as needed.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   */
   listOrganizationImpactsStream(
-      request?: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-      options?: CallOptions):
-    Transform{
+    request?: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+    options?: CallOptions,
+  ): Transform {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listOrganizationImpacts'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listOrganizationImpacts stream %j', request);
     return this.descriptors.page.listOrganizationImpacts.createStream(
       this.innerApiCalls.listOrganizationImpacts as GaxCall,
       request,
-      callSettings
+      callSettings,
     );
   }
 
-/**
- * Equivalent to `listOrganizationImpacts`, but returns an iterable object.
- *
- * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.parent
- *   Required. Parent value using the form
- *   `organizations/{organization_id}/locations/{location}/organizationImpacts`.
- *
- *   `organization_id` - ID (number) of the project that contains the event. To
- *   get your `organization_id`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
- * @param {number} [request.pageSize]
- *   Optional. The maximum number of events that should be returned. Acceptable
- *   values are `1` to `100`, inclusive. The default value is `10`.
- *
- *    If more results are available, the service returns a
- *   `next_page_token` that can be used to get the next page of results in
- *   subsequent list requests. The service may return fewer
- *   [impacts](/service-health/docs/reference/rest/v1beta/organizations.locations.organizationImpacts#OrganizationImpact)
- *   than the requested `page_size`.
- * @param {string} [request.pageToken]
- *   Optional. A token identifying a page of results the server should return.
- *
- *   Provide `page_token` returned by a previous `ListOrganizationImpacts` call
- *   to retrieve the next page of results.
- *
- *   When paginating, all other parameters provided to `ListOrganizationImpacts`
- *   must match the call that provided the page token.
- * @param {string} [request.filter]
- *   Optional. A filter expression that filters resources listed in the
- *   response. The expression is in the form of `field:value` for checking if a
- *   repeated field contains a value.
- *
- *   Example:
- *   `events:organizations%2F{organization_id}%2Flocations%2Fglobal%2ForganizationEvents%2Fevent-id`
- *
- *   To get your `{organization_id}`, see
- *   [Getting your organization resource
- *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
- *
- *   Multiple filter queries are separated by spaces.
- *
- *   By default, each expression is an AND expression. However, you can include
- *   AND and OR expressions explicitly.
- *   Filter is supported for the following fields: `events`.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Object}
- *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
- *   When you iterate the returned iterable, each element will be an object representing
- *   {@link protos.google.cloud.servicehealth.v1.OrganizationImpact|OrganizationImpact}. The API will be called under the hood as needed, once per the page,
- *   so you can stop the iteration when you don't need more results.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/service_health.list_organization_impacts.js</caption>
- * region_tag:servicehealth_v1_generated_ServiceHealth_ListOrganizationImpacts_async
- */
+  /**
+   * Equivalent to `listOrganizationImpacts`, but returns an iterable object.
+   *
+   * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.parent
+   *   Required. Parent value using the form
+   *   `organizations/{organization_id}/locations/{location}/organizationImpacts`.
+   *
+   *   `organization_id` - ID (number) of the project that contains the event. To
+   *   get your `organization_id`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
+   * @param {number} [request.pageSize]
+   *   Optional. The maximum number of events that should be returned. Acceptable
+   *   values are `1` to `100`, inclusive. The default value is `10`.
+   *
+   *    If more results are available, the service returns a
+   *   `next_page_token` that can be used to get the next page of results in
+   *   subsequent list requests. The service may return fewer
+   *   [impacts](/service-health/docs/reference/rest/v1beta/organizations.locations.organizationImpacts#OrganizationImpact)
+   *   than the requested `page_size`.
+   * @param {string} [request.pageToken]
+   *   Optional. A token identifying a page of results the server should return.
+   *
+   *   Provide `page_token` returned by a previous `ListOrganizationImpacts` call
+   *   to retrieve the next page of results.
+   *
+   *   When paginating, all other parameters provided to `ListOrganizationImpacts`
+   *   must match the call that provided the page token.
+   * @param {string} [request.filter]
+   *   Optional. A filter expression that filters resources listed in the
+   *   response. The expression is in the form of `field:value` for checking if a
+   *   repeated field contains a value.
+   *
+   *   Example:
+   *   `events:organizations%2F{organization_id}%2Flocations%2Fglobal%2ForganizationEvents%2Fevent-id`
+   *
+   *   To get your `{organization_id}`, see
+   *   [Getting your organization resource
+   *   ID](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id).
+   *
+   *   Multiple filter queries are separated by spaces.
+   *
+   *   By default, each expression is an AND expression. However, you can include
+   *   AND and OR expressions explicitly.
+   *   Filter is supported for the following fields: `events`.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Object}
+   *   An iterable Object that allows {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols | async iteration }.
+   *   When you iterate the returned iterable, each element will be an object representing
+   *   {@link protos.google.cloud.servicehealth.v1.OrganizationImpact|OrganizationImpact}. The API will be called under the hood as needed, once per the page,
+   *   so you can stop the iteration when you don't need more results.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#auto-pagination | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/service_health.list_organization_impacts.js</caption>
+   * region_tag:servicehealth_v1_generated_ServiceHealth_ListOrganizationImpacts_async
+   */
   listOrganizationImpactsAsync(
-      request?: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
-      options?: CallOptions):
-    AsyncIterable<protos.google.cloud.servicehealth.v1.IOrganizationImpact>{
+    request?: protos.google.cloud.servicehealth.v1.IListOrganizationImpactsRequest,
+    options?: CallOptions,
+  ): AsyncIterable<protos.google.cloud.servicehealth.v1.IOrganizationImpact> {
     request = request || {};
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'parent': request.parent ?? '',
-    });
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        parent: request.parent ?? '',
+      });
     const defaultCallSettings = this._defaults['listOrganizationImpacts'];
     const callSettings = defaultCallSettings.merge(options);
-    this.initialize().catch(err => {throw err});
+    this.initialize().catch((err) => {
+      throw err;
+    });
     this._log.info('listOrganizationImpacts iterate %j', request);
     return this.descriptors.page.listOrganizationImpacts.asyncIterate(
       this.innerApiCalls['listOrganizationImpacts'] as GaxCall,
       request as {},
-      callSettings
+      callSettings,
     ) as AsyncIterable<protos.google.cloud.servicehealth.v1.IOrganizationImpact>;
   }
-/**
+
+  /**
    * Gets information about a location.
    *
    * @param {Object} request
@@ -1589,12 +1868,11 @@ export class ServiceHealthClient {
       | null
       | undefined,
       {} | null | undefined
-    >
+    >,
   ): Promise<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.getLocation(request, options, callback);
   }
-
-/**
+  /**
    * Lists information about the supported locations for this service. Returns an iterable object.
    *
    * `for`-`await`-`of` syntax is used with the iterable to get response elements on-demand.
@@ -1627,7 +1905,7 @@ export class ServiceHealthClient {
    */
   listLocationsAsync(
     request: LocationProtos.google.cloud.location.IListLocationsRequest,
-    options?: CallOptions
+    options?: CallOptions,
   ): AsyncIterable<LocationProtos.google.cloud.location.ILocation> {
     return this.locationsClient.listLocationsAsync(request, options);
   }
@@ -1644,7 +1922,7 @@ export class ServiceHealthClient {
    * @param {string} event
    * @returns {string} Resource name string.
    */
-  eventPath(project:string,location:string,event:string) {
+  eventPath(project: string, location: string, event: string) {
     return this.pathTemplates.eventPathTemplate.render({
       project: project,
       location: location,
@@ -1693,7 +1971,7 @@ export class ServiceHealthClient {
    * @param {string} event
    * @returns {string} Resource name string.
    */
-  organizationEventPath(organization:string,location:string,event:string) {
+  organizationEventPath(organization: string, location: string, event: string) {
     return this.pathTemplates.organizationEventPathTemplate.render({
       organization: organization,
       location: location,
@@ -1709,7 +1987,9 @@ export class ServiceHealthClient {
    * @returns {string} A string representing the organization.
    */
   matchOrganizationFromOrganizationEventName(organizationEventName: string) {
-    return this.pathTemplates.organizationEventPathTemplate.match(organizationEventName).organization;
+    return this.pathTemplates.organizationEventPathTemplate.match(
+      organizationEventName,
+    ).organization;
   }
 
   /**
@@ -1720,7 +2000,9 @@ export class ServiceHealthClient {
    * @returns {string} A string representing the location.
    */
   matchLocationFromOrganizationEventName(organizationEventName: string) {
-    return this.pathTemplates.organizationEventPathTemplate.match(organizationEventName).location;
+    return this.pathTemplates.organizationEventPathTemplate.match(
+      organizationEventName,
+    ).location;
   }
 
   /**
@@ -1731,7 +2013,9 @@ export class ServiceHealthClient {
    * @returns {string} A string representing the event.
    */
   matchEventFromOrganizationEventName(organizationEventName: string) {
-    return this.pathTemplates.organizationEventPathTemplate.match(organizationEventName).event;
+    return this.pathTemplates.organizationEventPathTemplate.match(
+      organizationEventName,
+    ).event;
   }
 
   /**
@@ -1742,7 +2026,11 @@ export class ServiceHealthClient {
    * @param {string} organization_impact
    * @returns {string} Resource name string.
    */
-  organizationImpactPath(organization:string,location:string,organizationImpact:string) {
+  organizationImpactPath(
+    organization: string,
+    location: string,
+    organizationImpact: string,
+  ) {
     return this.pathTemplates.organizationImpactPathTemplate.render({
       organization: organization,
       location: location,
@@ -1758,7 +2046,9 @@ export class ServiceHealthClient {
    * @returns {string} A string representing the organization.
    */
   matchOrganizationFromOrganizationImpactName(organizationImpactName: string) {
-    return this.pathTemplates.organizationImpactPathTemplate.match(organizationImpactName).organization;
+    return this.pathTemplates.organizationImpactPathTemplate.match(
+      organizationImpactName,
+    ).organization;
   }
 
   /**
@@ -1769,7 +2059,9 @@ export class ServiceHealthClient {
    * @returns {string} A string representing the location.
    */
   matchLocationFromOrganizationImpactName(organizationImpactName: string) {
-    return this.pathTemplates.organizationImpactPathTemplate.match(organizationImpactName).location;
+    return this.pathTemplates.organizationImpactPathTemplate.match(
+      organizationImpactName,
+    ).location;
   }
 
   /**
@@ -1779,8 +2071,12 @@ export class ServiceHealthClient {
    *   A fully-qualified path representing OrganizationImpact resource.
    * @returns {string} A string representing the organization_impact.
    */
-  matchOrganizationImpactFromOrganizationImpactName(organizationImpactName: string) {
-    return this.pathTemplates.organizationImpactPathTemplate.match(organizationImpactName).organization_impact;
+  matchOrganizationImpactFromOrganizationImpactName(
+    organizationImpactName: string,
+  ) {
+    return this.pathTemplates.organizationImpactPathTemplate.match(
+      organizationImpactName,
+    ).organization_impact;
   }
 
   /**
@@ -1791,13 +2087,15 @@ export class ServiceHealthClient {
    */
   close(): Promise<void> {
     if (this.serviceHealthStub && !this._terminated) {
-      return this.serviceHealthStub.then(stub => {
+      return this.serviceHealthStub.then((stub) => {
         this._log.info('ending gRPC channel');
         this._terminated = true;
         stub.close();
-        this.locationsClient.close().catch(err => {throw err});
+        this.locationsClient.close().catch((err) => {
+          throw err;
+        });
       });
     }
     return Promise.resolve();
   }
-}
\ No newline at end of file
+}
diff --git a/packages/google-cloud-servicehealth/system-test/fixtures/sample/src/index.ts b/packages/google-cloud-servicehealth/system-test/fixtures/sample/src/index.ts
index 833cb312cc7d..ceebc67b494f 100644
--- a/packages/google-cloud-servicehealth/system-test/fixtures/sample/src/index.ts
+++ b/packages/google-cloud-servicehealth/system-test/fixtures/sample/src/index.ts
@@ -16,7 +16,7 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-import {ServiceHealthClient} from '@google-cloud/servicehealth';
+import { ServiceHealthClient } from '@google-cloud/servicehealth';
 
 // check that the client class type name can be used
 function doStuffWithServiceHealthClient(client: ServiceHealthClient) {
diff --git a/packages/google-cloud-servicehealth/system-test/install.ts b/packages/google-cloud-servicehealth/system-test/install.ts
index f66069aa3940..ccf167042d2e 100644
--- a/packages/google-cloud-servicehealth/system-test/install.ts
+++ b/packages/google-cloud-servicehealth/system-test/install.ts
@@ -16,34 +16,36 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-import {packNTest} from 'pack-n-play';
-import {readFileSync} from 'fs';
-import {describe, it} from 'mocha';
+import { packNTest } from 'pack-n-play';
+import { readFileSync } from 'fs';
+import { describe, it } from 'mocha';
 
 describe('📦 pack-n-play test', () => {
-
-  it('TypeScript code', async function() {
+  it('TypeScript code', async function () {
     this.timeout(300000);
     const options = {
       packageDir: process.cwd(),
       sample: {
         description: 'TypeScript user can use the type definitions',
-        ts: readFileSync('./system-test/fixtures/sample/src/index.ts').toString()
-      }
+        ts: readFileSync(
+          './system-test/fixtures/sample/src/index.ts',
+        ).toString(),
+      },
     };
     await packNTest(options);
   });
 
-  it('JavaScript code', async function() {
+  it('JavaScript code', async function () {
     this.timeout(300000);
     const options = {
       packageDir: process.cwd(),
       sample: {
         description: 'JavaScript user can use the library',
-        cjs: readFileSync('./system-test/fixtures/sample/src/index.js').toString()
-      }
+        cjs: readFileSync(
+          './system-test/fixtures/sample/src/index.js',
+        ).toString(),
+      },
     };
     await packNTest(options);
   });
-
 });
diff --git a/packages/google-cloud-servicehealth/test/gapic_service_health_v1.ts b/packages/google-cloud-servicehealth/test/gapic_service_health_v1.ts
index 405534e72651..c02bd9cfc724 100644
--- a/packages/google-cloud-servicehealth/test/gapic_service_health_v1.ts
+++ b/packages/google-cloud-servicehealth/test/gapic_service_health_v1.ts
@@ -19,1609 +19,2147 @@
 import * as protos from '../protos/protos';
 import * as assert from 'assert';
 import * as sinon from 'sinon';
-import {SinonStub} from 'sinon';
-import {describe, it} from 'mocha';
+import { SinonStub } from 'sinon';
+import { describe, it } from 'mocha';
 import * as servicehealthModule from '../src';
 
-import {PassThrough} from 'stream';
+import { PassThrough } from 'stream';
 
-import {protobuf, LocationProtos} from 'google-gax';
+import { protobuf, LocationProtos } from 'google-gax';
 
 // Dynamically loaded proto JSON is needed to get the type information
 // to fill in default values for request objects
-const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll();
+const root = protobuf.Root.fromJSON(
+  require('../protos/protos.json'),
+).resolveAll();
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
 function getTypeDefaultValue(typeName: string, fields: string[]) {
-    let type = root.lookupType(typeName) as protobuf.Type;
-    for (const field of fields.slice(0, -1)) {
-        type = type.fields[field]?.resolvedType as protobuf.Type;
-    }
-    return type.fields[fields[fields.length - 1]]?.defaultValue;
+  let type = root.lookupType(typeName) as protobuf.Type;
+  for (const field of fields.slice(0, -1)) {
+    type = type.fields[field]?.resolvedType as protobuf.Type;
+  }
+  return type.fields[fields[fields.length - 1]]?.defaultValue;
 }
 
 function generateSampleMessage<T extends object>(instance: T) {
-    const filledObject = (instance.constructor as typeof protobuf.Message)
-        .toObject(instance as protobuf.Message<T>, {defaults: true});
-    return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T;
+  const filledObject = (
+    instance.constructor as typeof protobuf.Message
+  ).toObject(instance as protobuf.Message<T>, { defaults: true });
+  return (instance.constructor as typeof protobuf.Message).fromObject(
+    filledObject,
+  ) as T;
 }
 
 function stubSimpleCall<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]);
+  return error
+    ? sinon.stub().rejects(error)
+    : sinon.stub().resolves([response]);
 }
 
-function stubSimpleCallWithCallback<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response);
+function stubSimpleCallWithCallback<ResponseType>(
+  response?: ResponseType,
+  error?: Error,
+) {
+  return error
+    ? sinon.stub().callsArgWith(2, error)
+    : sinon.stub().callsArgWith(2, null, response);
 }
 
-function stubPageStreamingCall<ResponseType>(responses?: ResponseType[], error?: Error) {
-    const pagingStub = sinon.stub();
-    if (responses) {
-        for (let i = 0; i < responses.length; ++i) {
-            pagingStub.onCall(i).callsArgWith(2, null, responses[i]);
-        }
+function stubPageStreamingCall<ResponseType>(
+  responses?: ResponseType[],
+  error?: Error,
+) {
+  const pagingStub = sinon.stub();
+  if (responses) {
+    for (let i = 0; i < responses.length; ++i) {
+      pagingStub.onCall(i).callsArgWith(2, null, responses[i]);
     }
-    const transformStub = error ? sinon.stub().callsArgWith(2, error) : pagingStub;
-    const mockStream = new PassThrough({
-        objectMode: true,
-        transform: transformStub,
-    });
-    // trigger as many responses as needed
-    if (responses) {
-        for (let i = 0; i < responses.length; ++i) {
-            setImmediate(() => { mockStream.write({}); });
-        }
-        setImmediate(() => { mockStream.end(); });
-    } else {
-        setImmediate(() => { mockStream.write({}); });
-        setImmediate(() => { mockStream.end(); });
+  }
+  const transformStub = error
+    ? sinon.stub().callsArgWith(2, error)
+    : pagingStub;
+  const mockStream = new PassThrough({
+    objectMode: true,
+    transform: transformStub,
+  });
+  // trigger as many responses as needed
+  if (responses) {
+    for (let i = 0; i < responses.length; ++i) {
+      setImmediate(() => {
+        mockStream.write({});
+      });
     }
-    return sinon.stub().returns(mockStream);
+    setImmediate(() => {
+      mockStream.end();
+    });
+  } else {
+    setImmediate(() => {
+      mockStream.write({});
+    });
+    setImmediate(() => {
+      mockStream.end();
+    });
+  }
+  return sinon.stub().returns(mockStream);
 }
 
-function stubAsyncIterationCall<ResponseType>(responses?: ResponseType[], error?: Error) {
-    let counter = 0;
-    const asyncIterable = {
-        [Symbol.asyncIterator]() {
-            return {
-                async next() {
-                    if (error) {
-                        return Promise.reject(error);
-                    }
-                    if (counter >= responses!.length) {
-                        return Promise.resolve({done: true, value: undefined});
-                    }
-                    return Promise.resolve({done: false, value: responses![counter++]});
-                }
-            };
-        }
-    };
-    return sinon.stub().returns(asyncIterable);
+function stubAsyncIterationCall<ResponseType>(
+  responses?: ResponseType[],
+  error?: Error,
+) {
+  let counter = 0;
+  const asyncIterable = {
+    [Symbol.asyncIterator]() {
+      return {
+        async next() {
+          if (error) {
+            return Promise.reject(error);
+          }
+          if (counter >= responses!.length) {
+            return Promise.resolve({ done: true, value: undefined });
+          }
+          return Promise.resolve({ done: false, value: responses![counter++] });
+        },
+      };
+    },
+  };
+  return sinon.stub().returns(asyncIterable);
 }
 
 describe('v1.ServiceHealthClient', () => {
-    describe('Common methods', () => {
-        it('has apiEndpoint', () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient();
-            const apiEndpoint = client.apiEndpoint;
-            assert.strictEqual(apiEndpoint, 'servicehealth.googleapis.com');
-        });
+  describe('Common methods', () => {
+    it('has apiEndpoint', () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient();
+      const apiEndpoint = client.apiEndpoint;
+      assert.strictEqual(apiEndpoint, 'servicehealth.googleapis.com');
+    });
 
-        it('has universeDomain', () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient();
-            const universeDomain = client.universeDomain;
-            assert.strictEqual(universeDomain, "googleapis.com");
-        });
+    it('has universeDomain', () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient();
+      const universeDomain = client.universeDomain;
+      assert.strictEqual(universeDomain, 'googleapis.com');
+    });
 
-        if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-            it('throws DeprecationWarning if static servicePath is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const servicePath = servicehealthModule.v1.ServiceHealthClient.servicePath;
-                assert.strictEqual(servicePath, 'servicehealth.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-
-            it('throws DeprecationWarning if static apiEndpoint is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const apiEndpoint = servicehealthModule.v1.ServiceHealthClient.apiEndpoint;
-                assert.strictEqual(apiEndpoint, 'servicehealth.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-        }
-        it('sets apiEndpoint according to universe domain camelCase', () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({universeDomain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicehealth.example.com');
-        });
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      it('throws DeprecationWarning if static servicePath is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const servicePath =
+          servicehealthModule.v1.ServiceHealthClient.servicePath;
+        assert.strictEqual(servicePath, 'servicehealth.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+
+      it('throws DeprecationWarning if static apiEndpoint is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const apiEndpoint =
+          servicehealthModule.v1.ServiceHealthClient.apiEndpoint;
+        assert.strictEqual(apiEndpoint, 'servicehealth.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+    }
+    it('sets apiEndpoint according to universe domain camelCase', () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        universeDomain: 'example.com',
+      });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicehealth.example.com');
+    });
 
-        it('sets apiEndpoint according to universe domain snakeCase', () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({universe_domain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'servicehealth.example.com');
-        });
+    it('sets apiEndpoint according to universe domain snakeCase', () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        universe_domain: 'example.com',
+      });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'servicehealth.example.com');
+    });
 
-        if (typeof process === 'object' && 'env' in process) {
-            describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
-                it('sets apiEndpoint from environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new servicehealthModule.v1.ServiceHealthClient();
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicehealth.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-
-                it('value configured in code has priority over environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new servicehealthModule.v1.ServiceHealthClient({universeDomain: 'configured.example.com'});
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'servicehealth.configured.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-            });
-        }
-        it('does not allow setting both universeDomain and universe_domain', () => {
-            assert.throws(() => { new servicehealthModule.v1.ServiceHealthClient({universe_domain: 'example.com', universeDomain: 'example.net'}); });
+    if (typeof process === 'object' && 'env' in process) {
+      describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
+        it('sets apiEndpoint from environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client = new servicehealthModule.v1.ServiceHealthClient();
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(servicePath, 'servicehealth.example.com');
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
         });
 
-        it('has port', () => {
-            const port = servicehealthModule.v1.ServiceHealthClient.port;
-            assert(port);
-            assert(typeof port === 'number');
+        it('value configured in code has priority over environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client = new servicehealthModule.v1.ServiceHealthClient({
+            universeDomain: 'configured.example.com',
+          });
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(
+            servicePath,
+            'servicehealth.configured.example.com',
+          );
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
         });
-
-        it('should create a client with no option', () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient();
-            assert(client);
+      });
+    }
+    it('does not allow setting both universeDomain and universe_domain', () => {
+      assert.throws(() => {
+        new servicehealthModule.v1.ServiceHealthClient({
+          universe_domain: 'example.com',
+          universeDomain: 'example.net',
         });
+      });
+    });
 
-        it('should create a client with gRPC fallback', () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                fallback: true,
-            });
-            assert(client);
-        });
+    it('has port', () => {
+      const port = servicehealthModule.v1.ServiceHealthClient.port;
+      assert(port);
+      assert(typeof port === 'number');
+    });
 
-        it('has initialize method and supports deferred initialization', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.serviceHealthStub, undefined);
-            await client.initialize();
-            assert(client.serviceHealthStub);
-        });
+    it('should create a client with no option', () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient();
+      assert(client);
+    });
 
-        it('has close method for the initialized client', done => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.initialize().catch(err => {throw err});
-            assert(client.serviceHealthStub);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
-        });
+    it('should create a client with gRPC fallback', () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        fallback: true,
+      });
+      assert(client);
+    });
 
-        it('has close method for the non-initialized client', done => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.serviceHealthStub, undefined);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
-        });
+    it('has initialize method and supports deferred initialization', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      assert.strictEqual(client.serviceHealthStub, undefined);
+      await client.initialize();
+      assert(client.serviceHealthStub);
+    });
 
-        it('has getProjectId method', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
-            const result = await client.getProjectId();
-            assert.strictEqual(result, fakeProjectId);
-            assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+    it('has close method for the initialized client', (done) => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.initialize().catch((err) => {
+        throw err;
+      });
+      assert(client.serviceHealthStub);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
+    });
 
-        it('has getProjectId method with callback', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId);
-            const promise = new Promise((resolve, reject) => {
-                client.getProjectId((err?: Error|null, projectId?: string|null) => {
-                    if (err) {
-                        reject(err);
-                    } else {
-                        resolve(projectId);
-                    }
-                });
-            });
-            const result = await promise;
-            assert.strictEqual(result, fakeProjectId);
+    it('has close method for the non-initialized client', (done) => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      assert.strictEqual(client.serviceHealthStub, undefined);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
     });
 
-    describe('getEvent', () => {
-        it('invokes getEvent without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetEventRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetEventRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.Event()
-            );
-            client.innerApiCalls.getEvent = stubSimpleCall(expectedResponse);
-            const [response] = await client.getEvent(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getEvent as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEvent as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('has getProjectId method', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
+      const result = await client.getProjectId();
+      assert.strictEqual(result, fakeProjectId);
+      assert((client.auth.getProjectId as SinonStub).calledWithExactly());
+    });
 
-        it('invokes getEvent without error using callback', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetEventRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetEventRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.Event()
-            );
-            client.innerApiCalls.getEvent = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getEvent(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicehealth.v1.IEvent|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getEvent as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEvent as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('has getProjectId method with callback', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.auth.getProjectId = sinon
+        .stub()
+        .callsArgWith(0, null, fakeProjectId);
+      const promise = new Promise((resolve, reject) => {
+        client.getProjectId((err?: Error | null, projectId?: string | null) => {
+          if (err) {
+            reject(err);
+          } else {
+            resolve(projectId);
+          }
         });
+      });
+      const result = await promise;
+      assert.strictEqual(result, fakeProjectId);
+    });
+  });
+
+  describe('getEvent', () => {
+    it('invokes getEvent without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetEventRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetEventRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.Event(),
+      );
+      client.innerApiCalls.getEvent = stubSimpleCall(expectedResponse);
+      const [response] = await client.getEvent(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getEvent as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEvent as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getEvent with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetEventRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetEventRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getEvent = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getEvent(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getEvent as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEvent as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getEvent without error using callback', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetEventRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetEventRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.Event(),
+      );
+      client.innerApiCalls.getEvent =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getEvent(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicehealth.v1.IEvent | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getEvent as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEvent as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getEvent with closed client', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetEventRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetEventRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getEvent(request), expectedError);
-        });
+    it('invokes getEvent with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetEventRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetEventRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getEvent = stubSimpleCall(undefined, expectedError);
+      await assert.rejects(client.getEvent(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getEvent as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEvent as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('getOrganizationEvent', () => {
-        it('invokes getOrganizationEvent without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetOrganizationEventRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetOrganizationEventRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.OrganizationEvent()
-            );
-            client.innerApiCalls.getOrganizationEvent = stubSimpleCall(expectedResponse);
-            const [response] = await client.getOrganizationEvent(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getOrganizationEvent as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getOrganizationEvent as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getEvent with closed client', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetEventRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetEventRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getEvent(request), expectedError);
+    });
+  });
+
+  describe('getOrganizationEvent', () => {
+    it('invokes getOrganizationEvent without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetOrganizationEventRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetOrganizationEventRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+      );
+      client.innerApiCalls.getOrganizationEvent =
+        stubSimpleCall(expectedResponse);
+      const [response] = await client.getOrganizationEvent(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getOrganizationEvent as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getOrganizationEvent as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getOrganizationEvent without error using callback', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetOrganizationEventRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetOrganizationEventRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.OrganizationEvent()
-            );
-            client.innerApiCalls.getOrganizationEvent = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getOrganizationEvent(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicehealth.v1.IOrganizationEvent|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getOrganizationEvent as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getOrganizationEvent as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getOrganizationEvent without error using callback', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetOrganizationEventRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetOrganizationEventRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+      );
+      client.innerApiCalls.getOrganizationEvent =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getOrganizationEvent(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicehealth.v1.IOrganizationEvent | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getOrganizationEvent as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getOrganizationEvent as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getOrganizationEvent with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetOrganizationEventRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetOrganizationEventRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getOrganizationEvent = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getOrganizationEvent(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getOrganizationEvent as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getOrganizationEvent as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getOrganizationEvent with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetOrganizationEventRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetOrganizationEventRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getOrganizationEvent = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getOrganizationEvent(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getOrganizationEvent as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getOrganizationEvent as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getOrganizationEvent with closed client', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetOrganizationEventRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetOrganizationEventRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getOrganizationEvent(request), expectedError);
-        });
+    it('invokes getOrganizationEvent with closed client', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetOrganizationEventRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetOrganizationEventRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getOrganizationEvent(request), expectedError);
+    });
+  });
+
+  describe('getOrganizationImpact', () => {
+    it('invokes getOrganizationImpact without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetOrganizationImpactRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetOrganizationImpactRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+      );
+      client.innerApiCalls.getOrganizationImpact =
+        stubSimpleCall(expectedResponse);
+      const [response] = await client.getOrganizationImpact(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getOrganizationImpact as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getOrganizationImpact as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('getOrganizationImpact', () => {
-        it('invokes getOrganizationImpact without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetOrganizationImpactRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetOrganizationImpactRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.OrganizationImpact()
-            );
-            client.innerApiCalls.getOrganizationImpact = stubSimpleCall(expectedResponse);
-            const [response] = await client.getOrganizationImpact(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getOrganizationImpact as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getOrganizationImpact as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getOrganizationImpact without error using callback', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetOrganizationImpactRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetOrganizationImpactRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+      );
+      client.innerApiCalls.getOrganizationImpact =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getOrganizationImpact(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicehealth.v1.IOrganizationImpact | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getOrganizationImpact as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getOrganizationImpact as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getOrganizationImpact without error using callback', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetOrganizationImpactRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetOrganizationImpactRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.OrganizationImpact()
-            );
-            client.innerApiCalls.getOrganizationImpact = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getOrganizationImpact(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicehealth.v1.IOrganizationImpact|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getOrganizationImpact as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getOrganizationImpact as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getOrganizationImpact with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetOrganizationImpactRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetOrganizationImpactRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getOrganizationImpact = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.getOrganizationImpact(request),
+        expectedError,
+      );
+      const actualRequest = (
+        client.innerApiCalls.getOrganizationImpact as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getOrganizationImpact as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getOrganizationImpact with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetOrganizationImpactRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetOrganizationImpactRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getOrganizationImpact = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getOrganizationImpact(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getOrganizationImpact as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getOrganizationImpact as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getOrganizationImpact with closed client', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.GetOrganizationImpactRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.GetOrganizationImpactRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(
+        client.getOrganizationImpact(request),
+        expectedError,
+      );
+    });
+  });
+
+  describe('listEvents', () => {
+    it('invokes listEvents without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+      ];
+      client.innerApiCalls.listEvents = stubSimpleCall(expectedResponse);
+      const [response] = await client.listEvents(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listEvents as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listEvents as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes getOrganizationImpact with closed client', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.GetOrganizationImpactRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.GetOrganizationImpactRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getOrganizationImpact(request), expectedError);
-        });
+    it('invokes listEvents without error using callback', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+      ];
+      client.innerApiCalls.listEvents =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.listEvents(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.servicehealth.v1.IEvent[] | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listEvents as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listEvents as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('listEvents', () => {
-        it('invokes listEvents without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-            ];
-            client.innerApiCalls.listEvents = stubSimpleCall(expectedResponse);
-            const [response] = await client.listEvents(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listEvents as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listEvents as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes listEvents with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.listEvents = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.listEvents(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.listEvents as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listEvents as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes listEvents without error using callback', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-            ];
-            client.innerApiCalls.listEvents = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.listEvents(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicehealth.v1.IEvent[]|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listEvents as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listEvents as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('invokes listEventsStream without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+      ];
+      client.descriptors.page.listEvents.createStream =
+        stubPageStreamingCall(expectedResponse);
+      const stream = client.listEventsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicehealth.v1.Event[] = [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicehealth.v1.Event) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
         });
-
-        it('invokes listEvents with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.listEvents = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.listEvents(request), expectedError);
-            const actualRequest = (client.innerApiCalls.listEvents as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listEvents as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+        stream.on('error', (err: Error) => {
+          reject(err);
         });
+      });
+      const responses = await promise;
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert(
+        (client.descriptors.page.listEvents.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listEvents, request),
+      );
+      assert(
+        (client.descriptors.page.listEvents.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
 
-        it('invokes listEventsStream without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-            ];
-            client.descriptors.page.listEvents.createStream = stubPageStreamingCall(expectedResponse);
-            const stream = client.listEventsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicehealth.v1.Event[] = [];
-                stream.on('data', (response: protos.google.cloud.servicehealth.v1.Event) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            const responses = await promise;
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert((client.descriptors.page.listEvents.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listEvents, request));
-            assert(
-                (client.descriptors.page.listEvents.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
+    it('invokes listEventsStream with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listEvents.createStream = stubPageStreamingCall(
+        undefined,
+        expectedError,
+      );
+      const stream = client.listEventsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicehealth.v1.Event[] = [];
+        stream.on(
+          'data',
+          (response: protos.google.cloud.servicehealth.v1.Event) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
         });
-
-        it('invokes listEventsStream with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listEvents.createStream = stubPageStreamingCall(undefined, expectedError);
-            const stream = client.listEventsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicehealth.v1.Event[] = [];
-                stream.on('data', (response: protos.google.cloud.servicehealth.v1.Event) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            await assert.rejects(promise, expectedError);
-            assert((client.descriptors.page.listEvents.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listEvents, request));
-            assert(
-                (client.descriptors.page.listEvents.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                         expectedHeaderRequestParams
-                    ) 
-            );
+        stream.on('error', (err: Error) => {
+          reject(err);
         });
+      });
+      await assert.rejects(promise, expectedError);
+      assert(
+        (client.descriptors.page.listEvents.createStream as SinonStub)
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listEvents, request),
+      );
+      assert(
+        (client.descriptors.page.listEvents.createStream as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('uses async iteration with listEvents without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+        generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
+      ];
+      client.descriptors.page.listEvents.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: protos.google.cloud.servicehealth.v1.IEvent[] = [];
+      const iterable = client.listEventsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (client.descriptors.page.listEvents.asyncIterate as SinonStub).getCall(
+          0,
+        ).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listEvents.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+
+    it('uses async iteration with listEvents with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listEvents.asyncIterate = stubAsyncIterationCall(
+        undefined,
+        expectedError,
+      );
+      const iterable = client.listEventsAsync(request);
+      await assert.rejects(async () => {
+        const responses: protos.google.cloud.servicehealth.v1.IEvent[] = [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (client.descriptors.page.listEvents.asyncIterate as SinonStub).getCall(
+          0,
+        ).args[1],
+        request,
+      );
+      assert(
+        (client.descriptors.page.listEvents.asyncIterate as SinonStub)
+          .getCall(0)
+          .args[2].otherArgs.headers[
+            'x-goog-request-params'
+          ].includes(expectedHeaderRequestParams),
+      );
+    });
+  });
+
+  describe('listOrganizationEvents', () => {
+    it('invokes listOrganizationEvents without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+      ];
+      client.innerApiCalls.listOrganizationEvents =
+        stubSimpleCall(expectedResponse);
+      const [response] = await client.listOrganizationEvents(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listOrganizationEvents as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listOrganizationEvents as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('uses async iteration with listEvents without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.Event()),
-            ];
-            client.descriptors.page.listEvents.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: protos.google.cloud.servicehealth.v1.IEvent[] = [];
-            const iterable = client.listEventsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+    it('invokes listOrganizationEvents without error using callback', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+      ];
+      client.innerApiCalls.listOrganizationEvents =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.listOrganizationEvents(
+          request,
+          (
+            err?: Error | null,
+            result?:
+              | protos.google.cloud.servicehealth.v1.IOrganizationEvent[]
+              | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.descriptors.page.listEvents.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listEvents.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listOrganizationEvents as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listOrganizationEvents as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('uses async iteration with listEvents with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listEvents.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listEventsAsync(request);
-            await assert.rejects(async () => {
-                const responses: protos.google.cloud.servicehealth.v1.IEvent[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.descriptors.page.listEvents.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listEvents.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('invokes listOrganizationEvents with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.listOrganizationEvents = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.listOrganizationEvents(request),
+        expectedError,
+      );
+      const actualRequest = (
+        client.innerApiCalls.listOrganizationEvents as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listOrganizationEvents as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('listOrganizationEvents', () => {
-        it('invokes listOrganizationEvents without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-            ];
-            client.innerApiCalls.listOrganizationEvents = stubSimpleCall(expectedResponse);
-            const [response] = await client.listOrganizationEvents(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listOrganizationEvents as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listOrganizationEvents as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('invokes listOrganizationEventsStream without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+      ];
+      client.descriptors.page.listOrganizationEvents.createStream =
+        stubPageStreamingCall(expectedResponse);
+      const stream = client.listOrganizationEventsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicehealth.v1.OrganizationEvent[] =
+          [];
+        stream.on(
+          'data',
+          (
+            response: protos.google.cloud.servicehealth.v1.OrganizationEvent,
+          ) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
         });
-
-        it('invokes listOrganizationEvents without error using callback', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-            ];
-            client.innerApiCalls.listOrganizationEvents = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.listOrganizationEvents(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicehealth.v1.IOrganizationEvent[]|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listOrganizationEvents as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listOrganizationEvents as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+        stream.on('error', (err: Error) => {
+          reject(err);
         });
+      });
+      const responses = await promise;
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert(
+        (
+          client.descriptors.page.listOrganizationEvents
+            .createStream as SinonStub
+        )
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listOrganizationEvents, request),
+      );
+      assert(
+        (
+          client.descriptors.page.listOrganizationEvents
+            .createStream as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
 
-        it('invokes listOrganizationEvents with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.listOrganizationEvents = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.listOrganizationEvents(request), expectedError);
-            const actualRequest = (client.innerApiCalls.listOrganizationEvents as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listOrganizationEvents as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('invokes listOrganizationEventsStream with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listOrganizationEvents.createStream =
+        stubPageStreamingCall(undefined, expectedError);
+      const stream = client.listOrganizationEventsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicehealth.v1.OrganizationEvent[] =
+          [];
+        stream.on(
+          'data',
+          (
+            response: protos.google.cloud.servicehealth.v1.OrganizationEvent,
+          ) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
         });
-
-        it('invokes listOrganizationEventsStream without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-            ];
-            client.descriptors.page.listOrganizationEvents.createStream = stubPageStreamingCall(expectedResponse);
-            const stream = client.listOrganizationEventsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicehealth.v1.OrganizationEvent[] = [];
-                stream.on('data', (response: protos.google.cloud.servicehealth.v1.OrganizationEvent) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            const responses = await promise;
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert((client.descriptors.page.listOrganizationEvents.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listOrganizationEvents, request));
-            assert(
-                (client.descriptors.page.listOrganizationEvents.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
+        stream.on('error', (err: Error) => {
+          reject(err);
         });
+      });
+      await assert.rejects(promise, expectedError);
+      assert(
+        (
+          client.descriptors.page.listOrganizationEvents
+            .createStream as SinonStub
+        )
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listOrganizationEvents, request),
+      );
+      assert(
+        (
+          client.descriptors.page.listOrganizationEvents
+            .createStream as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
 
-        it('invokes listOrganizationEventsStream with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listOrganizationEvents.createStream = stubPageStreamingCall(undefined, expectedError);
-            const stream = client.listOrganizationEventsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicehealth.v1.OrganizationEvent[] = [];
-                stream.on('data', (response: protos.google.cloud.servicehealth.v1.OrganizationEvent) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            await assert.rejects(promise, expectedError);
-            assert((client.descriptors.page.listOrganizationEvents.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listOrganizationEvents, request));
-            assert(
-                (client.descriptors.page.listOrganizationEvents.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                         expectedHeaderRequestParams
-                    ) 
-            );
-        });
+    it('uses async iteration with listOrganizationEvents without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationEvent(),
+        ),
+      ];
+      client.descriptors.page.listOrganizationEvents.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: protos.google.cloud.servicehealth.v1.IOrganizationEvent[] =
+        [];
+      const iterable = client.listOrganizationEventsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listOrganizationEvents
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.descriptors.page.listOrganizationEvents
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
 
-        it('uses async iteration with listOrganizationEvents without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationEvent()),
-            ];
-            client.descriptors.page.listOrganizationEvents.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: protos.google.cloud.servicehealth.v1.IOrganizationEvent[] = [];
-            const iterable = client.listOrganizationEventsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
-            }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.descriptors.page.listOrganizationEvents.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listOrganizationEvents.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('uses async iteration with listOrganizationEvents with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationEventsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listOrganizationEvents.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listOrganizationEventsAsync(request);
+      await assert.rejects(async () => {
+        const responses: protos.google.cloud.servicehealth.v1.IOrganizationEvent[] =
+          [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listOrganizationEvents
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.descriptors.page.listOrganizationEvents
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+  });
+
+  describe('listOrganizationImpacts', () => {
+    it('invokes listOrganizationImpacts without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+      ];
+      client.innerApiCalls.listOrganizationImpacts =
+        stubSimpleCall(expectedResponse);
+      const [response] = await client.listOrganizationImpacts(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listOrganizationImpacts as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listOrganizationImpacts as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('uses async iteration with listOrganizationEvents with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationEventsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationEventsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listOrganizationEvents.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listOrganizationEventsAsync(request);
-            await assert.rejects(async () => {
-                const responses: protos.google.cloud.servicehealth.v1.IOrganizationEvent[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.descriptors.page.listOrganizationEvents.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listOrganizationEvents.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('invokes listOrganizationImpacts without error using callback', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+      ];
+      client.innerApiCalls.listOrganizationImpacts =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.listOrganizationImpacts(
+          request,
+          (
+            err?: Error | null,
+            result?:
+              | protos.google.cloud.servicehealth.v1.IOrganizationImpact[]
+              | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.listOrganizationImpacts as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listOrganizationImpacts as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('listOrganizationImpacts', () => {
-        it('invokes listOrganizationImpacts without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-            ];
-            client.innerApiCalls.listOrganizationImpacts = stubSimpleCall(expectedResponse);
-            const [response] = await client.listOrganizationImpacts(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listOrganizationImpacts as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listOrganizationImpacts as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes listOrganizationImpacts with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.listOrganizationImpacts = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.listOrganizationImpacts(request),
+        expectedError,
+      );
+      const actualRequest = (
+        client.innerApiCalls.listOrganizationImpacts as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.listOrganizationImpacts as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes listOrganizationImpacts without error using callback', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-            ];
-            client.innerApiCalls.listOrganizationImpacts = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.listOrganizationImpacts(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.servicehealth.v1.IOrganizationImpact[]|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.listOrganizationImpacts as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listOrganizationImpacts as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('invokes listOrganizationImpactsStream without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+      ];
+      client.descriptors.page.listOrganizationImpacts.createStream =
+        stubPageStreamingCall(expectedResponse);
+      const stream = client.listOrganizationImpactsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicehealth.v1.OrganizationImpact[] =
+          [];
+        stream.on(
+          'data',
+          (
+            response: protos.google.cloud.servicehealth.v1.OrganizationImpact,
+          ) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
         });
-
-        it('invokes listOrganizationImpacts with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.listOrganizationImpacts = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.listOrganizationImpacts(request), expectedError);
-            const actualRequest = (client.innerApiCalls.listOrganizationImpacts as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.listOrganizationImpacts as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+        stream.on('error', (err: Error) => {
+          reject(err);
         });
+      });
+      const responses = await promise;
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert(
+        (
+          client.descriptors.page.listOrganizationImpacts
+            .createStream as SinonStub
+        )
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listOrganizationImpacts, request),
+      );
+      assert(
+        (
+          client.descriptors.page.listOrganizationImpacts
+            .createStream as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
 
-        it('invokes listOrganizationImpactsStream without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-            ];
-            client.descriptors.page.listOrganizationImpacts.createStream = stubPageStreamingCall(expectedResponse);
-            const stream = client.listOrganizationImpactsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicehealth.v1.OrganizationImpact[] = [];
-                stream.on('data', (response: protos.google.cloud.servicehealth.v1.OrganizationImpact) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            const responses = await promise;
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert((client.descriptors.page.listOrganizationImpacts.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listOrganizationImpacts, request));
-            assert(
-                (client.descriptors.page.listOrganizationImpacts.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
+    it('invokes listOrganizationImpactsStream with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listOrganizationImpacts.createStream =
+        stubPageStreamingCall(undefined, expectedError);
+      const stream = client.listOrganizationImpactsStream(request);
+      const promise = new Promise((resolve, reject) => {
+        const responses: protos.google.cloud.servicehealth.v1.OrganizationImpact[] =
+          [];
+        stream.on(
+          'data',
+          (
+            response: protos.google.cloud.servicehealth.v1.OrganizationImpact,
+          ) => {
+            responses.push(response);
+          },
+        );
+        stream.on('end', () => {
+          resolve(responses);
         });
-
-        it('invokes listOrganizationImpactsStream with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listOrganizationImpacts.createStream = stubPageStreamingCall(undefined, expectedError);
-            const stream = client.listOrganizationImpactsStream(request);
-            const promise = new Promise((resolve, reject) => {
-                const responses: protos.google.cloud.servicehealth.v1.OrganizationImpact[] = [];
-                stream.on('data', (response: protos.google.cloud.servicehealth.v1.OrganizationImpact) => {
-                    responses.push(response);
-                });
-                stream.on('end', () => {
-                    resolve(responses);
-                });
-                stream.on('error', (err: Error) => {
-                    reject(err);
-                });
-            });
-            await assert.rejects(promise, expectedError);
-            assert((client.descriptors.page.listOrganizationImpacts.createStream as SinonStub)
-                .getCall(0).calledWith(client.innerApiCalls.listOrganizationImpacts, request));
-            assert(
-                (client.descriptors.page.listOrganizationImpacts.createStream as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                         expectedHeaderRequestParams
-                    ) 
-            );
+        stream.on('error', (err: Error) => {
+          reject(err);
         });
+      });
+      await assert.rejects(promise, expectedError);
+      assert(
+        (
+          client.descriptors.page.listOrganizationImpacts
+            .createStream as SinonStub
+        )
+          .getCall(0)
+          .calledWith(client.innerApiCalls.listOrganizationImpacts, request),
+      );
+      assert(
+        (
+          client.descriptors.page.listOrganizationImpacts
+            .createStream as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
 
-        it('uses async iteration with listOrganizationImpacts without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedResponse = [
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-              generateSampleMessage(new protos.google.cloud.servicehealth.v1.OrganizationImpact()),
-            ];
-            client.descriptors.page.listOrganizationImpacts.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: protos.google.cloud.servicehealth.v1.IOrganizationImpact[] = [];
-            const iterable = client.listOrganizationImpactsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
-            }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.descriptors.page.listOrganizationImpacts.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listOrganizationImpacts.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('uses async iteration with listOrganizationImpacts without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedResponse = [
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+        generateSampleMessage(
+          new protos.google.cloud.servicehealth.v1.OrganizationImpact(),
+        ),
+      ];
+      client.descriptors.page.listOrganizationImpacts.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: protos.google.cloud.servicehealth.v1.IOrganizationImpact[] =
+        [];
+      const iterable = client.listOrganizationImpactsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listOrganizationImpacts
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.descriptors.page.listOrganizationImpacts
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
 
-        it('uses async iteration with listOrganizationImpacts with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest', ['parent']);
-            request.parent = defaultValue1;
-            const expectedHeaderRequestParams = `parent=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.descriptors.page.listOrganizationImpacts.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listOrganizationImpactsAsync(request);
-            await assert.rejects(async () => {
-                const responses: protos.google.cloud.servicehealth.v1.IOrganizationImpact[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.descriptors.page.listOrganizationImpacts.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.descriptors.page.listOrganizationImpacts.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+    it('uses async iteration with listOrganizationImpacts with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.servicehealth.v1.ListOrganizationImpactsRequest',
+        ['parent'],
+      );
+      request.parent = defaultValue1;
+      const expectedHeaderRequestParams = `parent=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.descriptors.page.listOrganizationImpacts.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listOrganizationImpactsAsync(request);
+      await assert.rejects(async () => {
+        const responses: protos.google.cloud.servicehealth.v1.IOrganizationImpact[] =
+          [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.descriptors.page.listOrganizationImpacts
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.descriptors.page.listOrganizationImpacts
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
     });
-    describe('getLocation', () => {
-        it('invokes getLocation without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
-            const response = await client.getLocation(request, expectedOptions);
-            assert.deepStrictEqual(response, [expectedResponse]);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
-        it('invokes getLocation without error using callback', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedResponse = generateSampleMessage(
-              new LocationProtos.google.cloud.location.Location()
-            );
-            client.locationsClient.getLocation = sinon.stub().callsArgWith(2, null, expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getLocation(
-                    request,
-                    expectedOptions,
-                    (
-                        err?: Error | null,
-                        result?: LocationProtos.google.cloud.location.ILocation | null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0));
-        });
-        it('invokes getLocation with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.GetLocationRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedOptions = {
-                otherArgs: {
-                    headers: {
-                        'x-goog-request-params': expectedHeaderRequestParams,
-                    },
-                },
-            };
-            const expectedError = new Error('expected');
-            client.locationsClient.getLocation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getLocation(request, expectedOptions), expectedError);
-            assert((client.locationsClient.getLocation as SinonStub)
-                .getCall(0).calledWith(request, expectedOptions, undefined));
-        });
+  });
+  describe('getLocation', () => {
+    it('invokes getLocation without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = stubSimpleCall(expectedResponse);
+      const response = await client.getLocation(request, expectedOptions);
+      assert.deepStrictEqual(response, [expectedResponse]);
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
     });
-    describe('listLocationsAsync', () => {
-        it('uses async iteration with listLocations without error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-                new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedResponse = [
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-                generateSampleMessage(
-                    new LocationProtos.google.cloud.location.Location()
-                ),
-            ];
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-            const iterable = client.listLocationsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
+    it('invokes getLocation without error using callback', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedResponse = generateSampleMessage(
+        new LocationProtos.google.cloud.location.Location(),
+      );
+      client.locationsClient.getLocation = sinon
+        .stub()
+        .callsArgWith(2, null, expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getLocation(
+          request,
+          expectedOptions,
+          (
+            err?: Error | null,
+            result?: LocationProtos.google.cloud.location.ILocation | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
             }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
-        it('uses async iteration with listLocations with error', async () => {
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new LocationProtos.google.cloud.location.ListLocationsRequest()
-            );
-            request.name = '';
-            const expectedHeaderRequestParams = 'name=';
-            const expectedError = new Error('expected');
-            client.locationsClient.descriptors.page.listLocations.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.listLocationsAsync(request);
-            await assert.rejects(async () => {
-                const responses: LocationProtos.google.cloud.location.ILocation[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-            assert(
-                (client.locationsClient.descriptors.page.listLocations.asyncIterate as SinonStub)
-                    .getCall(0).args[2].otherArgs.headers['x-goog-request-params'].includes(
-                        expectedHeaderRequestParams
-                    )
-            );
-        });
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      assert((client.locationsClient.getLocation as SinonStub).getCall(0));
+    });
+    it('invokes getLocation with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.GetLocationRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedOptions = {
+        otherArgs: {
+          headers: {
+            'x-goog-request-params': expectedHeaderRequestParams,
+          },
+        },
+      };
+      const expectedError = new Error('expected');
+      client.locationsClient.getLocation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.getLocation(request, expectedOptions),
+        expectedError,
+      );
+      assert(
+        (client.locationsClient.getLocation as SinonStub)
+          .getCall(0)
+          .calledWith(request, expectedOptions, undefined),
+      );
+    });
+  });
+  describe('listLocationsAsync', () => {
+    it('uses async iteration with listLocations without error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedResponse = [
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+        generateSampleMessage(
+          new LocationProtos.google.cloud.location.Location(),
+        ),
+      ];
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+      const iterable = client.listLocationsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+    it('uses async iteration with listLocations with error', async () => {
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new LocationProtos.google.cloud.location.ListLocationsRequest(),
+      );
+      request.name = '';
+      const expectedHeaderRequestParams = 'name=';
+      const expectedError = new Error('expected');
+      client.locationsClient.descriptors.page.listLocations.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.listLocationsAsync(request);
+      await assert.rejects(async () => {
+        const responses: LocationProtos.google.cloud.location.ILocation[] = [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+      assert(
+        (
+          client.locationsClient.descriptors.page.listLocations
+            .asyncIterate as SinonStub
+        )
+          .getCall(0)
+          .args[2].otherArgs.headers['x-goog-request-params'].includes(
+            expectedHeaderRequestParams,
+          ),
+      );
+    });
+  });
+
+  describe('Path templates', () => {
+    describe('event', async () => {
+      const fakePath = '/rendered/path/event';
+      const expectedParameters = {
+        project: 'projectValue',
+        location: 'locationValue',
+        event: 'eventValue',
+      };
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.eventPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.eventPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('eventPath', () => {
+        const result = client.eventPath(
+          'projectValue',
+          'locationValue',
+          'eventValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.eventPathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchProjectFromEventName', () => {
+        const result = client.matchProjectFromEventName(fakePath);
+        assert.strictEqual(result, 'projectValue');
+        assert(
+          (client.pathTemplates.eventPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromEventName', () => {
+        const result = client.matchLocationFromEventName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (client.pathTemplates.eventPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchEventFromEventName', () => {
+        const result = client.matchEventFromEventName(fakePath);
+        assert.strictEqual(result, 'eventValue');
+        assert(
+          (client.pathTemplates.eventPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
 
-    describe('Path templates', () => {
-
-        describe('event', async () => {
-            const fakePath = "/rendered/path/event";
-            const expectedParameters = {
-                project: "projectValue",
-                location: "locationValue",
-                event: "eventValue",
-            };
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.eventPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.eventPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('eventPath', () => {
-                const result = client.eventPath("projectValue", "locationValue", "eventValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.eventPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchProjectFromEventName', () => {
-                const result = client.matchProjectFromEventName(fakePath);
-                assert.strictEqual(result, "projectValue");
-                assert((client.pathTemplates.eventPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromEventName', () => {
-                const result = client.matchLocationFromEventName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.eventPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchEventFromEventName', () => {
-                const result = client.matchEventFromEventName(fakePath);
-                assert.strictEqual(result, "eventValue");
-                assert((client.pathTemplates.eventPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
-
-        describe('organizationEvent', async () => {
-            const fakePath = "/rendered/path/organizationEvent";
-            const expectedParameters = {
-                organization: "organizationValue",
-                location: "locationValue",
-                event: "eventValue",
-            };
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.organizationEventPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.organizationEventPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('organizationEventPath', () => {
-                const result = client.organizationEventPath("organizationValue", "locationValue", "eventValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.organizationEventPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchOrganizationFromOrganizationEventName', () => {
-                const result = client.matchOrganizationFromOrganizationEventName(fakePath);
-                assert.strictEqual(result, "organizationValue");
-                assert((client.pathTemplates.organizationEventPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromOrganizationEventName', () => {
-                const result = client.matchLocationFromOrganizationEventName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.organizationEventPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchEventFromOrganizationEventName', () => {
-                const result = client.matchEventFromOrganizationEventName(fakePath);
-                assert.strictEqual(result, "eventValue");
-                assert((client.pathTemplates.organizationEventPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    describe('organizationEvent', async () => {
+      const fakePath = '/rendered/path/organizationEvent';
+      const expectedParameters = {
+        organization: 'organizationValue',
+        location: 'locationValue',
+        event: 'eventValue',
+      };
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.organizationEventPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.organizationEventPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('organizationEventPath', () => {
+        const result = client.organizationEventPath(
+          'organizationValue',
+          'locationValue',
+          'eventValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (
+            client.pathTemplates.organizationEventPathTemplate
+              .render as SinonStub
+          )
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchOrganizationFromOrganizationEventName', () => {
+        const result =
+          client.matchOrganizationFromOrganizationEventName(fakePath);
+        assert.strictEqual(result, 'organizationValue');
+        assert(
+          (
+            client.pathTemplates.organizationEventPathTemplate
+              .match as SinonStub
+          )
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromOrganizationEventName', () => {
+        const result = client.matchLocationFromOrganizationEventName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (
+            client.pathTemplates.organizationEventPathTemplate
+              .match as SinonStub
+          )
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchEventFromOrganizationEventName', () => {
+        const result = client.matchEventFromOrganizationEventName(fakePath);
+        assert.strictEqual(result, 'eventValue');
+        assert(
+          (
+            client.pathTemplates.organizationEventPathTemplate
+              .match as SinonStub
+          )
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+    });
 
-        describe('organizationImpact', async () => {
-            const fakePath = "/rendered/path/organizationImpact";
-            const expectedParameters = {
-                organization: "organizationValue",
-                location: "locationValue",
-                organization_impact: "organizationImpactValue",
-            };
-            const client = new servicehealthModule.v1.ServiceHealthClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.organizationImpactPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.organizationImpactPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('organizationImpactPath', () => {
-                const result = client.organizationImpactPath("organizationValue", "locationValue", "organizationImpactValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.organizationImpactPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchOrganizationFromOrganizationImpactName', () => {
-                const result = client.matchOrganizationFromOrganizationImpactName(fakePath);
-                assert.strictEqual(result, "organizationValue");
-                assert((client.pathTemplates.organizationImpactPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchLocationFromOrganizationImpactName', () => {
-                const result = client.matchLocationFromOrganizationImpactName(fakePath);
-                assert.strictEqual(result, "locationValue");
-                assert((client.pathTemplates.organizationImpactPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchOrganizationImpactFromOrganizationImpactName', () => {
-                const result = client.matchOrganizationImpactFromOrganizationImpactName(fakePath);
-                assert.strictEqual(result, "organizationImpactValue");
-                assert((client.pathTemplates.organizationImpactPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    describe('organizationImpact', async () => {
+      const fakePath = '/rendered/path/organizationImpact';
+      const expectedParameters = {
+        organization: 'organizationValue',
+        location: 'locationValue',
+        organization_impact: 'organizationImpactValue',
+      };
+      const client = new servicehealthModule.v1.ServiceHealthClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.organizationImpactPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.organizationImpactPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('organizationImpactPath', () => {
+        const result = client.organizationImpactPath(
+          'organizationValue',
+          'locationValue',
+          'organizationImpactValue',
+        );
+        assert.strictEqual(result, fakePath);
+        assert(
+          (
+            client.pathTemplates.organizationImpactPathTemplate
+              .render as SinonStub
+          )
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchOrganizationFromOrganizationImpactName', () => {
+        const result =
+          client.matchOrganizationFromOrganizationImpactName(fakePath);
+        assert.strictEqual(result, 'organizationValue');
+        assert(
+          (
+            client.pathTemplates.organizationImpactPathTemplate
+              .match as SinonStub
+          )
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchLocationFromOrganizationImpactName', () => {
+        const result = client.matchLocationFromOrganizationImpactName(fakePath);
+        assert.strictEqual(result, 'locationValue');
+        assert(
+          (
+            client.pathTemplates.organizationImpactPathTemplate
+              .match as SinonStub
+          )
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchOrganizationImpactFromOrganizationImpactName', () => {
+        const result =
+          client.matchOrganizationImpactFromOrganizationImpactName(fakePath);
+        assert.strictEqual(result, 'organizationImpactValue');
+        assert(
+          (
+            client.pathTemplates.organizationImpactPathTemplate
+              .match as SinonStub
+          )
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
+  });
 });
diff --git a/packages/google-cloud-servicehealth/webpack.config.js b/packages/google-cloud-servicehealth/webpack.config.js
index 0986446dc566..0276ebf5584c 100644
--- a/packages/google-cloud-servicehealth/webpack.config.js
+++ b/packages/google-cloud-servicehealth/webpack.config.js
@@ -1,4 +1,4 @@
-// Copyright 2026 Google LLC
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
diff --git a/packages/google-cloud-shell/README.md b/packages/google-cloud-shell/README.md
index 7519ba9eb116..cffc0b9f8b3c 100644
--- a/packages/google-cloud-shell/README.md
+++ b/packages/google-cloud-shell/README.md
@@ -63,7 +63,6 @@ Samples are in the [`samples/`][homepage_samples] directory. Each sample's `READ
 | get environment | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-shell/samples/generated/v1/cloud_shell_service.get_environment.js) |
 | remove public key | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-shell/samples/generated/v1/cloud_shell_service.remove_public_key.js) |
 | start environment | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-shell/samples/generated/v1/cloud_shell_service.start_environment.js) |
-| cloud | [source code](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-shell/samples/generated/v1/snippet_metadata_google.cloud.shell.v1.json) |
 
 
 ## Supported Node.js Versions
@@ -97,7 +96,7 @@ More Information: [Google Cloud Platform Launch Stages][launch_stages]
 
 ## Contributing
 
-Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-shell/CONTRIBUTING.md).
+Contributions welcome! See the [Contributing Guide](https://github.com/googleapis/google-cloud-node/blob/main/CONTRIBUTING.md).
 
 Please note that this `README.md`
 and a variety of configuration files in this repository (including `.nycrc` and `tsconfig.json`)
@@ -107,7 +106,7 @@ are generated from a central template.
 
 Apache Version 2.0
 
-See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/packages/google-cloud-shell/LICENSE)
+See [LICENSE](https://github.com/googleapis/google-cloud-node/blob/main/LICENSE)
 
 [shell_img]: https://gstatic.com/cloudssh/images/open-btn.png
 [projects]: https://console.cloud.google.com/project
diff --git a/packages/google-cloud-shell/protos/protos.d.ts b/packages/google-cloud-shell/protos/protos.d.ts
index 609a671e6fc4..13a27ba516b1 100644
--- a/packages/google-cloud-shell/protos/protos.d.ts
+++ b/packages/google-cloud-shell/protos/protos.d.ts
@@ -2263,6 +2263,9 @@ export namespace google {
 
             /** CommonLanguageSettings destinations */
             destinations?: (google.api.ClientLibraryDestination[]|null);
+
+            /** CommonLanguageSettings selectiveGapicGeneration */
+            selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);
         }
 
         /** Represents a CommonLanguageSettings. */
@@ -2280,6 +2283,9 @@ export namespace google {
             /** CommonLanguageSettings destinations. */
             public destinations: google.api.ClientLibraryDestination[];
 
+            /** CommonLanguageSettings selectiveGapicGeneration. */
+            public selectiveGapicGeneration?: (google.api.ISelectiveGapicGeneration|null);
+
             /**
              * Creates a new CommonLanguageSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -2980,6 +2986,9 @@ export namespace google {
 
             /** PythonSettings common */
             common?: (google.api.ICommonLanguageSettings|null);
+
+            /** PythonSettings experimentalFeatures */
+            experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);
         }
 
         /** Represents a PythonSettings. */
@@ -2994,6 +3003,9 @@ export namespace google {
             /** PythonSettings common. */
             public common?: (google.api.ICommonLanguageSettings|null);
 
+            /** PythonSettings experimentalFeatures. */
+            public experimentalFeatures?: (google.api.PythonSettings.IExperimentalFeatures|null);
+
             /**
              * Creates a new PythonSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -3072,6 +3084,118 @@ export namespace google {
             public static getTypeUrl(typeUrlPrefix?: string): string;
         }
 
+        namespace PythonSettings {
+
+            /** Properties of an ExperimentalFeatures. */
+            interface IExperimentalFeatures {
+
+                /** ExperimentalFeatures restAsyncIoEnabled */
+                restAsyncIoEnabled?: (boolean|null);
+
+                /** ExperimentalFeatures protobufPythonicTypesEnabled */
+                protobufPythonicTypesEnabled?: (boolean|null);
+
+                /** ExperimentalFeatures unversionedPackageDisabled */
+                unversionedPackageDisabled?: (boolean|null);
+            }
+
+            /** Represents an ExperimentalFeatures. */
+            class ExperimentalFeatures implements IExperimentalFeatures {
+
+                /**
+                 * Constructs a new ExperimentalFeatures.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.api.PythonSettings.IExperimentalFeatures);
+
+                /** ExperimentalFeatures restAsyncIoEnabled. */
+                public restAsyncIoEnabled: boolean;
+
+                /** ExperimentalFeatures protobufPythonicTypesEnabled. */
+                public protobufPythonicTypesEnabled: boolean;
+
+                /** ExperimentalFeatures unversionedPackageDisabled. */
+                public unversionedPackageDisabled: boolean;
+
+                /**
+                 * Creates a new ExperimentalFeatures instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns ExperimentalFeatures instance
+                 */
+                public static create(properties?: google.api.PythonSettings.IExperimentalFeatures): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                 * @param message ExperimentalFeatures message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                 * @param message ExperimentalFeatures message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.api.PythonSettings.IExperimentalFeatures, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes an ExperimentalFeatures message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns ExperimentalFeatures
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns ExperimentalFeatures
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Verifies an ExperimentalFeatures message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns ExperimentalFeatures
+                 */
+                public static fromObject(object: { [k: string]: any }): google.api.PythonSettings.ExperimentalFeatures;
+
+                /**
+                 * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
+                 * @param message ExperimentalFeatures
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.api.PythonSettings.ExperimentalFeatures, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this ExperimentalFeatures to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for ExperimentalFeatures
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+        }
+
         /** Properties of a NodeSettings. */
         interface INodeSettings {
 
@@ -3398,6 +3522,9 @@ export namespace google {
 
             /** GoSettings common */
             common?: (google.api.ICommonLanguageSettings|null);
+
+            /** GoSettings renamedServices */
+            renamedServices?: ({ [k: string]: string }|null);
         }
 
         /** Represents a GoSettings. */
@@ -3412,6 +3539,9 @@ export namespace google {
             /** GoSettings common. */
             public common?: (google.api.ICommonLanguageSettings|null);
 
+            /** GoSettings renamedServices. */
+            public renamedServices: { [k: string]: string };
+
             /**
              * Creates a new GoSettings instance using the specified properties.
              * @param [properties] Properties to set
@@ -3736,6 +3866,109 @@ export namespace google {
             PACKAGE_MANAGER = 20
         }
 
+        /** Properties of a SelectiveGapicGeneration. */
+        interface ISelectiveGapicGeneration {
+
+            /** SelectiveGapicGeneration methods */
+            methods?: (string[]|null);
+
+            /** SelectiveGapicGeneration generateOmittedAsInternal */
+            generateOmittedAsInternal?: (boolean|null);
+        }
+
+        /** Represents a SelectiveGapicGeneration. */
+        class SelectiveGapicGeneration implements ISelectiveGapicGeneration {
+
+            /**
+             * Constructs a new SelectiveGapicGeneration.
+             * @param [properties] Properties to set
+             */
+            constructor(properties?: google.api.ISelectiveGapicGeneration);
+
+            /** SelectiveGapicGeneration methods. */
+            public methods: string[];
+
+            /** SelectiveGapicGeneration generateOmittedAsInternal. */
+            public generateOmittedAsInternal: boolean;
+
+            /**
+             * Creates a new SelectiveGapicGeneration instance using the specified properties.
+             * @param [properties] Properties to set
+             * @returns SelectiveGapicGeneration instance
+             */
+            public static create(properties?: google.api.ISelectiveGapicGeneration): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+             * @param message SelectiveGapicGeneration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encode(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+             * @param message SelectiveGapicGeneration message or plain object to encode
+             * @param [writer] Writer to encode to
+             * @returns Writer
+             */
+            public static encodeDelimited(message: google.api.ISelectiveGapicGeneration, writer?: $protobuf.Writer): $protobuf.Writer;
+
+            /**
+             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
+             * @param reader Reader or buffer to decode from
+             * @param [length] Message length if known beforehand
+             * @returns SelectiveGapicGeneration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
+             * @param reader Reader or buffer to decode from
+             * @returns SelectiveGapicGeneration
+             * @throws {Error} If the payload is not a reader or valid buffer
+             * @throws {$protobuf.util.ProtocolError} If required fields are missing
+             */
+            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Verifies a SelectiveGapicGeneration message.
+             * @param message Plain object to verify
+             * @returns `null` if valid, otherwise the reason why it is not
+             */
+            public static verify(message: { [k: string]: any }): (string|null);
+
+            /**
+             * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
+             * @param object Plain object
+             * @returns SelectiveGapicGeneration
+             */
+            public static fromObject(object: { [k: string]: any }): google.api.SelectiveGapicGeneration;
+
+            /**
+             * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
+             * @param message SelectiveGapicGeneration
+             * @param [options] Conversion options
+             * @returns Plain object
+             */
+            public static toObject(message: google.api.SelectiveGapicGeneration, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+            /**
+             * Converts this SelectiveGapicGeneration to JSON.
+             * @returns JSON object
+             */
+            public toJSON(): { [k: string]: any };
+
+            /**
+             * Gets the default type url for SelectiveGapicGeneration
+             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+             * @returns The default type url
+             */
+            public static getTypeUrl(typeUrlPrefix?: string): string;
+        }
+
         /** LaunchStage enum. */
         enum LaunchStage {
             LAUNCH_STAGE_UNSPECIFIED = 0,
@@ -4117,6 +4350,7 @@ export namespace google {
         /** Edition enum. */
         enum Edition {
             EDITION_UNKNOWN = 0,
+            EDITION_LEGACY = 900,
             EDITION_PROTO2 = 998,
             EDITION_PROTO3 = 999,
             EDITION_2023 = 1000,
@@ -4147,6 +4381,9 @@ export namespace google {
             /** FileDescriptorProto weakDependency */
             weakDependency?: (number[]|null);
 
+            /** FileDescriptorProto optionDependency */
+            optionDependency?: (string[]|null);
+
             /** FileDescriptorProto messageType */
             messageType?: (google.protobuf.IDescriptorProto[]|null);
 
@@ -4196,6 +4433,9 @@ export namespace google {
             /** FileDescriptorProto weakDependency. */
             public weakDependency: number[];
 
+            /** FileDescriptorProto optionDependency. */
+            public optionDependency: string[];
+
             /** FileDescriptorProto messageType. */
             public messageType: google.protobuf.IDescriptorProto[];
 
@@ -4330,6 +4570,9 @@ export namespace google {
 
             /** DescriptorProto reservedName */
             reservedName?: (string[]|null);
+
+            /** DescriptorProto visibility */
+            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
         }
 
         /** Represents a DescriptorProto. */
@@ -4371,6 +4614,9 @@ export namespace google {
             /** DescriptorProto reservedName. */
             public reservedName: string[];
 
+            /** DescriptorProto visibility. */
+            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);
+
             /**
              * Creates a new DescriptorProto instance using the specified properties.
              * @param [properties] Properties to set
@@ -5218,6 +5464,9 @@ export namespace google {
 
             /** EnumDescriptorProto reservedName */
             reservedName?: (string[]|null);
+
+            /** EnumDescriptorProto visibility */
+            visibility?: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility|null);
         }
 
         /** Represents an EnumDescriptorProto. */
@@ -5244,6 +5493,9 @@ export namespace google {
             /** EnumDescriptorProto reservedName. */
             public reservedName: string[];
 
+            /** EnumDescriptorProto visibility. */
+            public visibility: (google.protobuf.SymbolVisibility|keyof typeof google.protobuf.SymbolVisibility);
+
             /**
              * Creates a new EnumDescriptorProto instance using the specified properties.
              * @param [properties] Properties to set
@@ -6178,6 +6430,9 @@ export namespace google {
             /** FieldOptions features */
             features?: (google.protobuf.IFeatureSet|null);
 
+            /** FieldOptions featureSupport */
+            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** FieldOptions uninterpretedOption */
             uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
 
@@ -6233,6 +6488,9 @@ export namespace google {
             /** FieldOptions features. */
             public features?: (google.protobuf.IFeatureSet|null);
 
+            /** FieldOptions featureSupport. */
+            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** FieldOptions uninterpretedOption. */
             public uninterpretedOption: google.protobuf.IUninterpretedOption[];
 
@@ -6453,6 +6711,121 @@ export namespace google {
                  */
                 public static getTypeUrl(typeUrlPrefix?: string): string;
             }
+
+            /** Properties of a FeatureSupport. */
+            interface IFeatureSupport {
+
+                /** FeatureSupport editionIntroduced */
+                editionIntroduced?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** FeatureSupport editionDeprecated */
+                editionDeprecated?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+
+                /** FeatureSupport deprecationWarning */
+                deprecationWarning?: (string|null);
+
+                /** FeatureSupport editionRemoved */
+                editionRemoved?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
+            }
+
+            /** Represents a FeatureSupport. */
+            class FeatureSupport implements IFeatureSupport {
+
+                /**
+                 * Constructs a new FeatureSupport.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FieldOptions.IFeatureSupport);
+
+                /** FeatureSupport editionIntroduced. */
+                public editionIntroduced: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** FeatureSupport editionDeprecated. */
+                public editionDeprecated: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /** FeatureSupport deprecationWarning. */
+                public deprecationWarning: string;
+
+                /** FeatureSupport editionRemoved. */
+                public editionRemoved: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
+
+                /**
+                 * Creates a new FeatureSupport instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns FeatureSupport instance
+                 */
+                public static create(properties?: google.protobuf.FieldOptions.IFeatureSupport): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                 * @param message FeatureSupport message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                 * @param message FeatureSupport message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FieldOptions.IFeatureSupport, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a FeatureSupport message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns FeatureSupport
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns FeatureSupport
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Verifies a FeatureSupport message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns FeatureSupport
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FieldOptions.FeatureSupport;
+
+                /**
+                 * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified.
+                 * @param message FeatureSupport
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FieldOptions.FeatureSupport, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this FeatureSupport to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for FeatureSupport
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
         }
 
         /** Properties of an OneofOptions. */
@@ -6691,6 +7064,9 @@ export namespace google {
             /** EnumValueOptions debugRedact */
             debugRedact?: (boolean|null);
 
+            /** EnumValueOptions featureSupport */
+            featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** EnumValueOptions uninterpretedOption */
             uninterpretedOption?: (google.protobuf.IUninterpretedOption[]|null);
         }
@@ -6713,6 +7089,9 @@ export namespace google {
             /** EnumValueOptions debugRedact. */
             public debugRedact: boolean;
 
+            /** EnumValueOptions featureSupport. */
+            public featureSupport?: (google.protobuf.FieldOptions.IFeatureSupport|null);
+
             /** EnumValueOptions uninterpretedOption. */
             public uninterpretedOption: google.protobuf.IUninterpretedOption[];
 
@@ -7305,6 +7684,12 @@ export namespace google {
 
             /** FeatureSet jsonFormat */
             jsonFormat?: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat|null);
+
+            /** FeatureSet enforceNamingStyle */
+            enforceNamingStyle?: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle|null);
+
+            /** FeatureSet defaultSymbolVisibility */
+            defaultSymbolVisibility?: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null);
         }
 
         /** Represents a FeatureSet. */
@@ -7334,6 +7719,12 @@ export namespace google {
             /** FeatureSet jsonFormat. */
             public jsonFormat: (google.protobuf.FeatureSet.JsonFormat|keyof typeof google.protobuf.FeatureSet.JsonFormat);
 
+            /** FeatureSet enforceNamingStyle. */
+            public enforceNamingStyle: (google.protobuf.FeatureSet.EnforceNamingStyle|keyof typeof google.protobuf.FeatureSet.EnforceNamingStyle);
+
+            /** FeatureSet defaultSymbolVisibility. */
+            public defaultSymbolVisibility: (google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|keyof typeof google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility);
+
             /**
              * Creates a new FeatureSet instance using the specified properties.
              * @param [properties] Properties to set
@@ -7456,6 +7847,116 @@ export namespace google {
                 ALLOW = 1,
                 LEGACY_BEST_EFFORT = 2
             }
+
+            /** EnforceNamingStyle enum. */
+            enum EnforceNamingStyle {
+                ENFORCE_NAMING_STYLE_UNKNOWN = 0,
+                STYLE2024 = 1,
+                STYLE_LEGACY = 2
+            }
+
+            /** Properties of a VisibilityFeature. */
+            interface IVisibilityFeature {
+            }
+
+            /** Represents a VisibilityFeature. */
+            class VisibilityFeature implements IVisibilityFeature {
+
+                /**
+                 * Constructs a new VisibilityFeature.
+                 * @param [properties] Properties to set
+                 */
+                constructor(properties?: google.protobuf.FeatureSet.IVisibilityFeature);
+
+                /**
+                 * Creates a new VisibilityFeature instance using the specified properties.
+                 * @param [properties] Properties to set
+                 * @returns VisibilityFeature instance
+                 */
+                public static create(properties?: google.protobuf.FeatureSet.IVisibilityFeature): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                 * @param message VisibilityFeature message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encode(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                 * @param message VisibilityFeature message or plain object to encode
+                 * @param [writer] Writer to encode to
+                 * @returns Writer
+                 */
+                public static encodeDelimited(message: google.protobuf.FeatureSet.IVisibilityFeature, writer?: $protobuf.Writer): $protobuf.Writer;
+
+                /**
+                 * Decodes a VisibilityFeature message from the specified reader or buffer.
+                 * @param reader Reader or buffer to decode from
+                 * @param [length] Message length if known beforehand
+                 * @returns VisibilityFeature
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
+                 * @param reader Reader or buffer to decode from
+                 * @returns VisibilityFeature
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Verifies a VisibilityFeature message.
+                 * @param message Plain object to verify
+                 * @returns `null` if valid, otherwise the reason why it is not
+                 */
+                public static verify(message: { [k: string]: any }): (string|null);
+
+                /**
+                 * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types.
+                 * @param object Plain object
+                 * @returns VisibilityFeature
+                 */
+                public static fromObject(object: { [k: string]: any }): google.protobuf.FeatureSet.VisibilityFeature;
+
+                /**
+                 * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified.
+                 * @param message VisibilityFeature
+                 * @param [options] Conversion options
+                 * @returns Plain object
+                 */
+                public static toObject(message: google.protobuf.FeatureSet.VisibilityFeature, options?: $protobuf.IConversionOptions): { [k: string]: any };
+
+                /**
+                 * Converts this VisibilityFeature to JSON.
+                 * @returns JSON object
+                 */
+                public toJSON(): { [k: string]: any };
+
+                /**
+                 * Gets the default type url for VisibilityFeature
+                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns The default type url
+                 */
+                public static getTypeUrl(typeUrlPrefix?: string): string;
+            }
+
+            namespace VisibilityFeature {
+
+                /** DefaultSymbolVisibility enum. */
+                enum DefaultSymbolVisibility {
+                    DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0,
+                    EXPORT_ALL = 1,
+                    EXPORT_TOP_LEVEL = 2,
+                    LOCAL_ALL = 3,
+                    STRICT = 4
+                }
+            }
         }
 
         /** Properties of a FeatureSetDefaults. */
@@ -7575,8 +8076,11 @@ export namespace google {
                 /** FeatureSetEditionDefault edition */
                 edition?: (google.protobuf.Edition|keyof typeof google.protobuf.Edition|null);
 
-                /** FeatureSetEditionDefault features */
-                features?: (google.protobuf.IFeatureSet|null);
+                /** FeatureSetEditionDefault overridableFeatures */
+                overridableFeatures?: (google.protobuf.IFeatureSet|null);
+
+                /** FeatureSetEditionDefault fixedFeatures */
+                fixedFeatures?: (google.protobuf.IFeatureSet|null);
             }
 
             /** Represents a FeatureSetEditionDefault. */
@@ -7591,8 +8095,11 @@ export namespace google {
                 /** FeatureSetEditionDefault edition. */
                 public edition: (google.protobuf.Edition|keyof typeof google.protobuf.Edition);
 
-                /** FeatureSetEditionDefault features. */
-                public features?: (google.protobuf.IFeatureSet|null);
+                /** FeatureSetEditionDefault overridableFeatures. */
+                public overridableFeatures?: (google.protobuf.IFeatureSet|null);
+
+                /** FeatureSetEditionDefault fixedFeatures. */
+                public fixedFeatures?: (google.protobuf.IFeatureSet|null);
 
                 /**
                  * Creates a new FeatureSetEditionDefault instance using the specified properties.
@@ -8125,6 +8632,13 @@ export namespace google {
             }
         }
 
+        /** SymbolVisibility enum. */
+        enum SymbolVisibility {
+            VISIBILITY_UNSET = 0,
+            VISIBILITY_LOCAL = 1,
+            VISIBILITY_EXPORT = 2
+        }
+
         /** Properties of a Duration. */
         interface IDuration {
 
diff --git a/packages/google-cloud-shell/protos/protos.js b/packages/google-cloud-shell/protos/protos.js
index 396a2d47d353..7c0827523adb 100644
--- a/packages/google-cloud-shell/protos/protos.js
+++ b/packages/google-cloud-shell/protos/protos.js
@@ -295,7 +295,7 @@
                             this.publicKeys = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -441,9 +441,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        Environment.decode = function decode(reader, length, error) {
+                        Environment.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.Environment();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -489,7 +493,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -520,9 +524,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        Environment.verify = function verify(message) {
+                        Environment.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -573,9 +581,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.Environment} Environment
                          */
-                        Environment.fromObject = function fromObject(object) {
+                        Environment.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.Environment)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.Environment();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -747,7 +759,7 @@
                         function GetEnvironmentRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -812,9 +824,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        GetEnvironmentRequest.decode = function decode(reader, length, error) {
+                        GetEnvironmentRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.GetEnvironmentRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -826,7 +842,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -857,9 +873,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        GetEnvironmentRequest.verify = function verify(message) {
+                        GetEnvironmentRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -874,9 +894,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.GetEnvironmentRequest} GetEnvironmentRequest
                          */
-                        GetEnvironmentRequest.fromObject = function fromObject(object) {
+                        GetEnvironmentRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.GetEnvironmentRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.GetEnvironmentRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -951,7 +975,7 @@
                         function CreateEnvironmentMetadata(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1006,9 +1030,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CreateEnvironmentMetadata.decode = function decode(reader, length, error) {
+                        CreateEnvironmentMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.CreateEnvironmentMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1016,7 +1044,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1047,9 +1075,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CreateEnvironmentMetadata.verify = function verify(message) {
+                        CreateEnvironmentMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -1061,9 +1093,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.CreateEnvironmentMetadata} CreateEnvironmentMetadata
                          */
-                        CreateEnvironmentMetadata.fromObject = function fromObject(object) {
+                        CreateEnvironmentMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.CreateEnvironmentMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.shell.v1.CreateEnvironmentMetadata();
                         };
     
@@ -1128,7 +1164,7 @@
                         function DeleteEnvironmentMetadata(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1183,9 +1219,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        DeleteEnvironmentMetadata.decode = function decode(reader, length, error) {
+                        DeleteEnvironmentMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.DeleteEnvironmentMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1193,7 +1233,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1224,9 +1264,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        DeleteEnvironmentMetadata.verify = function verify(message) {
+                        DeleteEnvironmentMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -1238,9 +1282,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.DeleteEnvironmentMetadata} DeleteEnvironmentMetadata
                          */
-                        DeleteEnvironmentMetadata.fromObject = function fromObject(object) {
+                        DeleteEnvironmentMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.DeleteEnvironmentMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.shell.v1.DeleteEnvironmentMetadata();
                         };
     
@@ -1309,7 +1357,7 @@
                             this.publicKeys = [];
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1395,9 +1443,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        StartEnvironmentRequest.decode = function decode(reader, length, error) {
+                        StartEnvironmentRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.StartEnvironmentRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1419,7 +1471,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1450,9 +1502,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        StartEnvironmentRequest.verify = function verify(message) {
+                        StartEnvironmentRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -1477,9 +1533,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.StartEnvironmentRequest} StartEnvironmentRequest
                          */
-                        StartEnvironmentRequest.fromObject = function fromObject(object) {
+                        StartEnvironmentRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.StartEnvironmentRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.StartEnvironmentRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -1578,7 +1638,7 @@
                         function AuthorizeEnvironmentRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1673,9 +1733,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AuthorizeEnvironmentRequest.decode = function decode(reader, length, error) {
+                        AuthorizeEnvironmentRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.AuthorizeEnvironmentRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1695,11 +1759,11 @@
                                         break;
                                     }
                                 case 3: {
-                                        message.expireTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());
+                                        message.expireTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1730,9 +1794,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AuthorizeEnvironmentRequest.verify = function verify(message) {
+                        AuthorizeEnvironmentRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.name != null && message.hasOwnProperty("name"))
                                 if (!$util.isString(message.name))
                                     return "name: string expected";
@@ -1743,7 +1811,7 @@
                                 if (!$util.isString(message.idToken))
                                     return "idToken: string expected";
                             if (message.expireTime != null && message.hasOwnProperty("expireTime")) {
-                                var error = $root.google.protobuf.Timestamp.verify(message.expireTime);
+                                var error = $root.google.protobuf.Timestamp.verify(message.expireTime, long + 1);
                                 if (error)
                                     return "expireTime." + error;
                             }
@@ -1758,9 +1826,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.AuthorizeEnvironmentRequest} AuthorizeEnvironmentRequest
                          */
-                        AuthorizeEnvironmentRequest.fromObject = function fromObject(object) {
+                        AuthorizeEnvironmentRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.AuthorizeEnvironmentRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.AuthorizeEnvironmentRequest();
                             if (object.name != null)
                                 message.name = String(object.name);
@@ -1771,7 +1843,7 @@
                             if (object.expireTime != null) {
                                 if (typeof object.expireTime !== "object")
                                     throw TypeError(".google.cloud.shell.v1.AuthorizeEnvironmentRequest.expireTime: object expected");
-                                message.expireTime = $root.google.protobuf.Timestamp.fromObject(object.expireTime);
+                                message.expireTime = $root.google.protobuf.Timestamp.fromObject(object.expireTime, long + 1);
                             }
                             return message;
                         };
@@ -1854,7 +1926,7 @@
                         function AuthorizeEnvironmentResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -1909,9 +1981,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AuthorizeEnvironmentResponse.decode = function decode(reader, length, error) {
+                        AuthorizeEnvironmentResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.AuthorizeEnvironmentResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -1919,7 +1995,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -1950,9 +2026,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AuthorizeEnvironmentResponse.verify = function verify(message) {
+                        AuthorizeEnvironmentResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -1964,9 +2044,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.AuthorizeEnvironmentResponse} AuthorizeEnvironmentResponse
                          */
-                        AuthorizeEnvironmentResponse.fromObject = function fromObject(object) {
+                        AuthorizeEnvironmentResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.AuthorizeEnvironmentResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.shell.v1.AuthorizeEnvironmentResponse();
                         };
     
@@ -2031,7 +2115,7 @@
                         function AuthorizeEnvironmentMetadata(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2086,9 +2170,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AuthorizeEnvironmentMetadata.decode = function decode(reader, length, error) {
+                        AuthorizeEnvironmentMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.AuthorizeEnvironmentMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2096,7 +2184,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2127,9 +2215,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AuthorizeEnvironmentMetadata.verify = function verify(message) {
+                        AuthorizeEnvironmentMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -2141,9 +2233,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.AuthorizeEnvironmentMetadata} AuthorizeEnvironmentMetadata
                          */
-                        AuthorizeEnvironmentMetadata.fromObject = function fromObject(object) {
+                        AuthorizeEnvironmentMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.AuthorizeEnvironmentMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.shell.v1.AuthorizeEnvironmentMetadata();
                         };
     
@@ -2209,7 +2305,7 @@
                         function StartEnvironmentMetadata(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2274,9 +2370,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        StartEnvironmentMetadata.decode = function decode(reader, length, error) {
+                        StartEnvironmentMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.StartEnvironmentMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2288,7 +2388,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2319,9 +2419,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        StartEnvironmentMetadata.verify = function verify(message) {
+                        StartEnvironmentMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.state != null && message.hasOwnProperty("state"))
                                 switch (message.state) {
                                 default:
@@ -2344,9 +2448,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.StartEnvironmentMetadata} StartEnvironmentMetadata
                          */
-                        StartEnvironmentMetadata.fromObject = function fromObject(object) {
+                        StartEnvironmentMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.StartEnvironmentMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.StartEnvironmentMetadata();
                             switch (object.state) {
                             default:
@@ -2468,7 +2576,7 @@
                         function StartEnvironmentResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2533,9 +2641,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        StartEnvironmentResponse.decode = function decode(reader, length, error) {
+                        StartEnvironmentResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.StartEnvironmentResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2543,11 +2655,11 @@
                                     break;
                                 switch (tag >>> 3) {
                                 case 1: {
-                                        message.environment = $root.google.cloud.shell.v1.Environment.decode(reader, reader.uint32());
+                                        message.environment = $root.google.cloud.shell.v1.Environment.decode(reader, reader.uint32(), undefined, long + 1);
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2578,11 +2690,15 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        StartEnvironmentResponse.verify = function verify(message) {
+                        StartEnvironmentResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.environment != null && message.hasOwnProperty("environment")) {
-                                var error = $root.google.cloud.shell.v1.Environment.verify(message.environment);
+                                var error = $root.google.cloud.shell.v1.Environment.verify(message.environment, long + 1);
                                 if (error)
                                     return "environment." + error;
                             }
@@ -2597,14 +2713,18 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.StartEnvironmentResponse} StartEnvironmentResponse
                          */
-                        StartEnvironmentResponse.fromObject = function fromObject(object) {
+                        StartEnvironmentResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.StartEnvironmentResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.StartEnvironmentResponse();
                             if (object.environment != null) {
                                 if (typeof object.environment !== "object")
                                     throw TypeError(".google.cloud.shell.v1.StartEnvironmentResponse.environment: object expected");
-                                message.environment = $root.google.cloud.shell.v1.Environment.fromObject(object.environment);
+                                message.environment = $root.google.cloud.shell.v1.Environment.fromObject(object.environment, long + 1);
                             }
                             return message;
                         };
@@ -2679,7 +2799,7 @@
                         function AddPublicKeyRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2754,9 +2874,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AddPublicKeyRequest.decode = function decode(reader, length, error) {
+                        AddPublicKeyRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.AddPublicKeyRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2772,7 +2896,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -2803,9 +2927,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AddPublicKeyRequest.verify = function verify(message) {
+                        AddPublicKeyRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.environment != null && message.hasOwnProperty("environment"))
                                 if (!$util.isString(message.environment))
                                     return "environment: string expected";
@@ -2823,9 +2951,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.AddPublicKeyRequest} AddPublicKeyRequest
                          */
-                        AddPublicKeyRequest.fromObject = function fromObject(object) {
+                        AddPublicKeyRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.AddPublicKeyRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.AddPublicKeyRequest();
                             if (object.environment != null)
                                 message.environment = String(object.environment);
@@ -2907,7 +3039,7 @@
                         function AddPublicKeyResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -2972,9 +3104,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AddPublicKeyResponse.decode = function decode(reader, length, error) {
+                        AddPublicKeyResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.AddPublicKeyResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -2986,7 +3122,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3017,9 +3153,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AddPublicKeyResponse.verify = function verify(message) {
+                        AddPublicKeyResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.key != null && message.hasOwnProperty("key"))
                                 if (!$util.isString(message.key))
                                     return "key: string expected";
@@ -3034,9 +3174,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.AddPublicKeyResponse} AddPublicKeyResponse
                          */
-                        AddPublicKeyResponse.fromObject = function fromObject(object) {
+                        AddPublicKeyResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.AddPublicKeyResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.AddPublicKeyResponse();
                             if (object.key != null)
                                 message.key = String(object.key);
@@ -3111,7 +3255,7 @@
                         function AddPublicKeyMetadata(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3166,9 +3310,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        AddPublicKeyMetadata.decode = function decode(reader, length, error) {
+                        AddPublicKeyMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.AddPublicKeyMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3176,7 +3324,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3207,9 +3355,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        AddPublicKeyMetadata.verify = function verify(message) {
+                        AddPublicKeyMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -3221,9 +3373,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.AddPublicKeyMetadata} AddPublicKeyMetadata
                          */
-                        AddPublicKeyMetadata.fromObject = function fromObject(object) {
+                        AddPublicKeyMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.AddPublicKeyMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.shell.v1.AddPublicKeyMetadata();
                         };
     
@@ -3290,7 +3446,7 @@
                         function RemovePublicKeyRequest(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3365,9 +3521,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        RemovePublicKeyRequest.decode = function decode(reader, length, error) {
+                        RemovePublicKeyRequest.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.RemovePublicKeyRequest();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3383,7 +3543,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3414,9 +3574,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        RemovePublicKeyRequest.verify = function verify(message) {
+                        RemovePublicKeyRequest.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.environment != null && message.hasOwnProperty("environment"))
                                 if (!$util.isString(message.environment))
                                     return "environment: string expected";
@@ -3434,9 +3598,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.RemovePublicKeyRequest} RemovePublicKeyRequest
                          */
-                        RemovePublicKeyRequest.fromObject = function fromObject(object) {
+                        RemovePublicKeyRequest.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.RemovePublicKeyRequest)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.RemovePublicKeyRequest();
                             if (object.environment != null)
                                 message.environment = String(object.environment);
@@ -3517,7 +3685,7 @@
                         function RemovePublicKeyResponse(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3572,9 +3740,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        RemovePublicKeyResponse.decode = function decode(reader, length, error) {
+                        RemovePublicKeyResponse.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.RemovePublicKeyResponse();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3582,7 +3754,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3613,9 +3785,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        RemovePublicKeyResponse.verify = function verify(message) {
+                        RemovePublicKeyResponse.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -3627,9 +3803,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.RemovePublicKeyResponse} RemovePublicKeyResponse
                          */
-                        RemovePublicKeyResponse.fromObject = function fromObject(object) {
+                        RemovePublicKeyResponse.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.RemovePublicKeyResponse)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.shell.v1.RemovePublicKeyResponse();
                         };
     
@@ -3694,7 +3874,7 @@
                         function RemovePublicKeyMetadata(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3749,9 +3929,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        RemovePublicKeyMetadata.decode = function decode(reader, length, error) {
+                        RemovePublicKeyMetadata.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.RemovePublicKeyMetadata();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3759,7 +3943,7 @@
                                     break;
                                 switch (tag >>> 3) {
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3790,9 +3974,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        RemovePublicKeyMetadata.verify = function verify(message) {
+                        RemovePublicKeyMetadata.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             return null;
                         };
     
@@ -3804,9 +3992,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.RemovePublicKeyMetadata} RemovePublicKeyMetadata
                          */
-                        RemovePublicKeyMetadata.fromObject = function fromObject(object) {
+                        RemovePublicKeyMetadata.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.RemovePublicKeyMetadata)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             return new $root.google.cloud.shell.v1.RemovePublicKeyMetadata();
                         };
     
@@ -3872,7 +4064,7 @@
                         function CloudShellErrorDetails(properties) {
                             if (properties)
                                 for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                    if (properties[keys[i]] != null)
+                                    if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                         this[keys[i]] = properties[keys[i]];
                         }
     
@@ -3937,9 +4129,13 @@
                          * @throws {Error} If the payload is not a reader or valid buffer
                          * @throws {$protobuf.util.ProtocolError} If required fields are missing
                          */
-                        CloudShellErrorDetails.decode = function decode(reader, length, error) {
+                        CloudShellErrorDetails.decode = function decode(reader, length, error, long) {
                             if (!(reader instanceof $Reader))
                                 reader = $Reader.create(reader);
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $Reader.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.cloud.shell.v1.CloudShellErrorDetails();
                             while (reader.pos < end) {
                                 var tag = reader.uint32();
@@ -3951,7 +4147,7 @@
                                         break;
                                     }
                                 default:
-                                    reader.skipType(tag & 7);
+                                    reader.skipType(tag & 7, long);
                                     break;
                                 }
                             }
@@ -3982,9 +4178,13 @@
                          * @param {Object.<string,*>} message Plain object to verify
                          * @returns {string|null} `null` if valid, otherwise the reason why it is not
                          */
-                        CloudShellErrorDetails.verify = function verify(message) {
+                        CloudShellErrorDetails.verify = function verify(message, long) {
                             if (typeof message !== "object" || message === null)
                                 return "object expected";
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                return "maximum nesting depth exceeded";
                             if (message.code != null && message.hasOwnProperty("code"))
                                 switch (message.code) {
                                 default:
@@ -4008,9 +4208,13 @@
                          * @param {Object.<string,*>} object Plain object
                          * @returns {google.cloud.shell.v1.CloudShellErrorDetails} CloudShellErrorDetails
                          */
-                        CloudShellErrorDetails.fromObject = function fromObject(object) {
+                        CloudShellErrorDetails.fromObject = function fromObject(object, long) {
                             if (object instanceof $root.google.cloud.shell.v1.CloudShellErrorDetails)
                                 return object;
+                            if (long === undefined)
+                                long = 0;
+                            if (long > $util.recursionLimit)
+                                throw Error("maximum nesting depth exceeded");
                             var message = new $root.google.cloud.shell.v1.CloudShellErrorDetails();
                             switch (object.code) {
                             default:
@@ -4158,7 +4362,7 @@
                     this.rules = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -4234,9 +4438,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Http.decode = function decode(reader, length, error) {
+                Http.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Http();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -4246,7 +4454,7 @@
                         case 1: {
                                 if (!(message.rules && message.rules.length))
                                     message.rules = [];
-                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.rules.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
@@ -4254,7 +4462,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -4285,14 +4493,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Http.verify = function verify(message) {
+                Http.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.rules != null && message.hasOwnProperty("rules")) {
                         if (!Array.isArray(message.rules))
                             return "rules: array expected";
                         for (var i = 0; i < message.rules.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.rules[i]);
+                            var error = $root.google.api.HttpRule.verify(message.rules[i], long + 1);
                             if (error)
                                 return "rules." + error;
                         }
@@ -4311,9 +4523,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Http} Http
                  */
-                Http.fromObject = function fromObject(object) {
+                Http.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Http)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Http();
                     if (object.rules) {
                         if (!Array.isArray(object.rules))
@@ -4322,7 +4538,7 @@
                         for (var i = 0; i < object.rules.length; ++i) {
                             if (typeof object.rules[i] !== "object")
                                 throw TypeError(".google.api.Http.rules: object expected");
-                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i]);
+                            message.rules[i] = $root.google.api.HttpRule.fromObject(object.rules[i], long + 1);
                         }
                     }
                     if (object.fullyDecodeReservedExpansion != null)
@@ -4416,7 +4632,7 @@
                     this.additionalBindings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -4586,9 +4802,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                HttpRule.decode = function decode(reader, length, error) {
+                HttpRule.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.HttpRule();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -4620,7 +4840,7 @@
                                 break;
                             }
                         case 8: {
-                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32());
+                                message.custom = $root.google.api.CustomHttpPattern.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 7: {
@@ -4634,11 +4854,11 @@
                         case 11: {
                                 if (!(message.additionalBindings && message.additionalBindings.length))
                                     message.additionalBindings = [];
-                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32()));
+                                message.additionalBindings.push($root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -4669,9 +4889,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                HttpRule.verify = function verify(message) {
+                HttpRule.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     var properties = {};
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
@@ -4714,7 +4938,7 @@
                             return "pattern: multiple values";
                         properties.pattern = 1;
                         {
-                            var error = $root.google.api.CustomHttpPattern.verify(message.custom);
+                            var error = $root.google.api.CustomHttpPattern.verify(message.custom, long + 1);
                             if (error)
                                 return "custom." + error;
                         }
@@ -4729,7 +4953,7 @@
                         if (!Array.isArray(message.additionalBindings))
                             return "additionalBindings: array expected";
                         for (var i = 0; i < message.additionalBindings.length; ++i) {
-                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i]);
+                            var error = $root.google.api.HttpRule.verify(message.additionalBindings[i], long + 1);
                             if (error)
                                 return "additionalBindings." + error;
                         }
@@ -4745,9 +4969,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.HttpRule} HttpRule
                  */
-                HttpRule.fromObject = function fromObject(object) {
+                HttpRule.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.HttpRule)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.HttpRule();
                     if (object.selector != null)
                         message.selector = String(object.selector);
@@ -4764,7 +4992,7 @@
                     if (object.custom != null) {
                         if (typeof object.custom !== "object")
                             throw TypeError(".google.api.HttpRule.custom: object expected");
-                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom);
+                        message.custom = $root.google.api.CustomHttpPattern.fromObject(object.custom, long + 1);
                     }
                     if (object.body != null)
                         message.body = String(object.body);
@@ -4777,7 +5005,7 @@
                         for (var i = 0; i < object.additionalBindings.length; ++i) {
                             if (typeof object.additionalBindings[i] !== "object")
                                 throw TypeError(".google.api.HttpRule.additionalBindings: object expected");
-                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i]);
+                            message.additionalBindings[i] = $root.google.api.HttpRule.fromObject(object.additionalBindings[i], long + 1);
                         }
                     }
                     return message;
@@ -4897,7 +5125,7 @@
                 function CustomHttpPattern(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -4972,9 +5200,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CustomHttpPattern.decode = function decode(reader, length, error) {
+                CustomHttpPattern.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CustomHttpPattern();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -4990,7 +5222,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -5021,9 +5253,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CustomHttpPattern.verify = function verify(message) {
+                CustomHttpPattern.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.kind != null && message.hasOwnProperty("kind"))
                         if (!$util.isString(message.kind))
                             return "kind: string expected";
@@ -5041,9 +5277,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CustomHttpPattern} CustomHttpPattern
                  */
-                CustomHttpPattern.fromObject = function fromObject(object) {
+                CustomHttpPattern.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CustomHttpPattern)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CustomHttpPattern();
                     if (object.kind != null)
                         message.kind = String(object.kind);
@@ -5113,6 +5353,7 @@
                  * @interface ICommonLanguageSettings
                  * @property {string|null} [referenceDocsUri] CommonLanguageSettings referenceDocsUri
                  * @property {Array.<google.api.ClientLibraryDestination>|null} [destinations] CommonLanguageSettings destinations
+                 * @property {google.api.ISelectiveGapicGeneration|null} [selectiveGapicGeneration] CommonLanguageSettings selectiveGapicGeneration
                  */
     
                 /**
@@ -5127,7 +5368,7 @@
                     this.destinations = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -5147,6 +5388,14 @@
                  */
                 CommonLanguageSettings.prototype.destinations = $util.emptyArray;
     
+                /**
+                 * CommonLanguageSettings selectiveGapicGeneration.
+                 * @member {google.api.ISelectiveGapicGeneration|null|undefined} selectiveGapicGeneration
+                 * @memberof google.api.CommonLanguageSettings
+                 * @instance
+                 */
+                CommonLanguageSettings.prototype.selectiveGapicGeneration = null;
+    
                 /**
                  * Creates a new CommonLanguageSettings instance using the specified properties.
                  * @function create
@@ -5179,6 +5428,8 @@
                             writer.int32(message.destinations[i]);
                         writer.ldelim();
                     }
+                    if (message.selectiveGapicGeneration != null && Object.hasOwnProperty.call(message, "selectiveGapicGeneration"))
+                        $root.google.api.SelectiveGapicGeneration.encode(message.selectiveGapicGeneration, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
                     return writer;
                 };
     
@@ -5206,9 +5457,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CommonLanguageSettings.decode = function decode(reader, length, error) {
+                CommonLanguageSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CommonLanguageSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -5230,8 +5485,12 @@
                                     message.destinations.push(reader.int32());
                                 break;
                             }
+                        case 3: {
+                                message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -5262,9 +5521,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CommonLanguageSettings.verify = function verify(message) {
+                CommonLanguageSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
                         if (!$util.isString(message.referenceDocsUri))
                             return "referenceDocsUri: string expected";
@@ -5281,6 +5544,11 @@
                                 break;
                             }
                     }
+                    if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration")) {
+                        var error = $root.google.api.SelectiveGapicGeneration.verify(message.selectiveGapicGeneration, long + 1);
+                        if (error)
+                            return "selectiveGapicGeneration." + error;
+                    }
                     return null;
                 };
     
@@ -5292,9 +5560,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CommonLanguageSettings} CommonLanguageSettings
                  */
-                CommonLanguageSettings.fromObject = function fromObject(object) {
+                CommonLanguageSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CommonLanguageSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CommonLanguageSettings();
                     if (object.referenceDocsUri != null)
                         message.referenceDocsUri = String(object.referenceDocsUri);
@@ -5323,6 +5595,11 @@
                                 break;
                             }
                     }
+                    if (object.selectiveGapicGeneration != null) {
+                        if (typeof object.selectiveGapicGeneration !== "object")
+                            throw TypeError(".google.api.CommonLanguageSettings.selectiveGapicGeneration: object expected");
+                        message.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.fromObject(object.selectiveGapicGeneration, long + 1);
+                    }
                     return message;
                 };
     
@@ -5341,8 +5618,10 @@
                     var object = {};
                     if (options.arrays || options.defaults)
                         object.destinations = [];
-                    if (options.defaults)
+                    if (options.defaults) {
                         object.referenceDocsUri = "";
+                        object.selectiveGapicGeneration = null;
+                    }
                     if (message.referenceDocsUri != null && message.hasOwnProperty("referenceDocsUri"))
                         object.referenceDocsUri = message.referenceDocsUri;
                     if (message.destinations && message.destinations.length) {
@@ -5350,6 +5629,8 @@
                         for (var j = 0; j < message.destinations.length; ++j)
                             object.destinations[j] = options.enums === String ? $root.google.api.ClientLibraryDestination[message.destinations[j]] === undefined ? message.destinations[j] : $root.google.api.ClientLibraryDestination[message.destinations[j]] : message.destinations[j];
                     }
+                    if (message.selectiveGapicGeneration != null && message.hasOwnProperty("selectiveGapicGeneration"))
+                        object.selectiveGapicGeneration = $root.google.api.SelectiveGapicGeneration.toObject(message.selectiveGapicGeneration, options);
                     return object;
                 };
     
@@ -5412,7 +5693,7 @@
                 function ClientLibrarySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -5577,9 +5858,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ClientLibrarySettings.decode = function decode(reader, length, error) {
+                ClientLibrarySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ClientLibrarySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -5599,39 +5884,39 @@
                                 break;
                             }
                         case 21: {
-                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32());
+                                message.javaSettings = $root.google.api.JavaSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 22: {
-                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32());
+                                message.cppSettings = $root.google.api.CppSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 23: {
-                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32());
+                                message.phpSettings = $root.google.api.PhpSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 24: {
-                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32());
+                                message.pythonSettings = $root.google.api.PythonSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 25: {
-                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32());
+                                message.nodeSettings = $root.google.api.NodeSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 26: {
-                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32());
+                                message.dotnetSettings = $root.google.api.DotnetSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 27: {
-                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32());
+                                message.rubySettings = $root.google.api.RubySettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 28: {
-                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32());
+                                message.goSettings = $root.google.api.GoSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -5662,9 +5947,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ClientLibrarySettings.verify = function verify(message) {
+                ClientLibrarySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.version != null && message.hasOwnProperty("version"))
                         if (!$util.isString(message.version))
                             return "version: string expected";
@@ -5686,42 +5975,42 @@
                         if (typeof message.restNumericEnums !== "boolean")
                             return "restNumericEnums: boolean expected";
                     if (message.javaSettings != null && message.hasOwnProperty("javaSettings")) {
-                        var error = $root.google.api.JavaSettings.verify(message.javaSettings);
+                        var error = $root.google.api.JavaSettings.verify(message.javaSettings, long + 1);
                         if (error)
                             return "javaSettings." + error;
                     }
                     if (message.cppSettings != null && message.hasOwnProperty("cppSettings")) {
-                        var error = $root.google.api.CppSettings.verify(message.cppSettings);
+                        var error = $root.google.api.CppSettings.verify(message.cppSettings, long + 1);
                         if (error)
                             return "cppSettings." + error;
                     }
                     if (message.phpSettings != null && message.hasOwnProperty("phpSettings")) {
-                        var error = $root.google.api.PhpSettings.verify(message.phpSettings);
+                        var error = $root.google.api.PhpSettings.verify(message.phpSettings, long + 1);
                         if (error)
                             return "phpSettings." + error;
                     }
                     if (message.pythonSettings != null && message.hasOwnProperty("pythonSettings")) {
-                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings);
+                        var error = $root.google.api.PythonSettings.verify(message.pythonSettings, long + 1);
                         if (error)
                             return "pythonSettings." + error;
                     }
                     if (message.nodeSettings != null && message.hasOwnProperty("nodeSettings")) {
-                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings);
+                        var error = $root.google.api.NodeSettings.verify(message.nodeSettings, long + 1);
                         if (error)
                             return "nodeSettings." + error;
                     }
                     if (message.dotnetSettings != null && message.hasOwnProperty("dotnetSettings")) {
-                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings);
+                        var error = $root.google.api.DotnetSettings.verify(message.dotnetSettings, long + 1);
                         if (error)
                             return "dotnetSettings." + error;
                     }
                     if (message.rubySettings != null && message.hasOwnProperty("rubySettings")) {
-                        var error = $root.google.api.RubySettings.verify(message.rubySettings);
+                        var error = $root.google.api.RubySettings.verify(message.rubySettings, long + 1);
                         if (error)
                             return "rubySettings." + error;
                     }
                     if (message.goSettings != null && message.hasOwnProperty("goSettings")) {
-                        var error = $root.google.api.GoSettings.verify(message.goSettings);
+                        var error = $root.google.api.GoSettings.verify(message.goSettings, long + 1);
                         if (error)
                             return "goSettings." + error;
                     }
@@ -5736,9 +6025,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ClientLibrarySettings} ClientLibrarySettings
                  */
-                ClientLibrarySettings.fromObject = function fromObject(object) {
+                ClientLibrarySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ClientLibrarySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ClientLibrarySettings();
                     if (object.version != null)
                         message.version = String(object.version);
@@ -5787,42 +6080,42 @@
                     if (object.javaSettings != null) {
                         if (typeof object.javaSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.javaSettings: object expected");
-                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings);
+                        message.javaSettings = $root.google.api.JavaSettings.fromObject(object.javaSettings, long + 1);
                     }
                     if (object.cppSettings != null) {
                         if (typeof object.cppSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.cppSettings: object expected");
-                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings);
+                        message.cppSettings = $root.google.api.CppSettings.fromObject(object.cppSettings, long + 1);
                     }
                     if (object.phpSettings != null) {
                         if (typeof object.phpSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.phpSettings: object expected");
-                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings);
+                        message.phpSettings = $root.google.api.PhpSettings.fromObject(object.phpSettings, long + 1);
                     }
                     if (object.pythonSettings != null) {
                         if (typeof object.pythonSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.pythonSettings: object expected");
-                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings);
+                        message.pythonSettings = $root.google.api.PythonSettings.fromObject(object.pythonSettings, long + 1);
                     }
                     if (object.nodeSettings != null) {
                         if (typeof object.nodeSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.nodeSettings: object expected");
-                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings);
+                        message.nodeSettings = $root.google.api.NodeSettings.fromObject(object.nodeSettings, long + 1);
                     }
                     if (object.dotnetSettings != null) {
                         if (typeof object.dotnetSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.dotnetSettings: object expected");
-                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings);
+                        message.dotnetSettings = $root.google.api.DotnetSettings.fromObject(object.dotnetSettings, long + 1);
                     }
                     if (object.rubySettings != null) {
                         if (typeof object.rubySettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.rubySettings: object expected");
-                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings);
+                        message.rubySettings = $root.google.api.RubySettings.fromObject(object.rubySettings, long + 1);
                     }
                     if (object.goSettings != null) {
                         if (typeof object.goSettings !== "object")
                             throw TypeError(".google.api.ClientLibrarySettings.goSettings: object expected");
-                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings);
+                        message.goSettings = $root.google.api.GoSettings.fromObject(object.goSettings, long + 1);
                     }
                     return message;
                 };
@@ -5940,7 +6233,7 @@
                     this.librarySettings = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -6108,9 +6401,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Publishing.decode = function decode(reader, length, error) {
+                Publishing.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.Publishing();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -6120,7 +6417,7 @@
                         case 2: {
                                 if (!(message.methodSettings && message.methodSettings.length))
                                     message.methodSettings = [];
-                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32()));
+                                message.methodSettings.push($root.google.api.MethodSettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 101: {
@@ -6156,7 +6453,7 @@
                         case 109: {
                                 if (!(message.librarySettings && message.librarySettings.length))
                                     message.librarySettings = [];
-                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32()));
+                                message.librarySettings.push($root.google.api.ClientLibrarySettings.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 110: {
@@ -6168,7 +6465,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -6199,14 +6496,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Publishing.verify = function verify(message) {
+                Publishing.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.methodSettings != null && message.hasOwnProperty("methodSettings")) {
                         if (!Array.isArray(message.methodSettings))
                             return "methodSettings: array expected";
                         for (var i = 0; i < message.methodSettings.length; ++i) {
-                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i]);
+                            var error = $root.google.api.MethodSettings.verify(message.methodSettings[i], long + 1);
                             if (error)
                                 return "methodSettings." + error;
                         }
@@ -6251,7 +6552,7 @@
                         if (!Array.isArray(message.librarySettings))
                             return "librarySettings: array expected";
                         for (var i = 0; i < message.librarySettings.length; ++i) {
-                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i]);
+                            var error = $root.google.api.ClientLibrarySettings.verify(message.librarySettings[i], long + 1);
                             if (error)
                                 return "librarySettings." + error;
                         }
@@ -6273,9 +6574,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.Publishing} Publishing
                  */
-                Publishing.fromObject = function fromObject(object) {
+                Publishing.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.Publishing)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.Publishing();
                     if (object.methodSettings) {
                         if (!Array.isArray(object.methodSettings))
@@ -6284,7 +6589,7 @@
                         for (var i = 0; i < object.methodSettings.length; ++i) {
                             if (typeof object.methodSettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.methodSettings: object expected");
-                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i]);
+                            message.methodSettings[i] = $root.google.api.MethodSettings.fromObject(object.methodSettings[i], long + 1);
                         }
                     }
                     if (object.newIssueUri != null)
@@ -6351,7 +6656,7 @@
                         for (var i = 0; i < object.librarySettings.length; ++i) {
                             if (typeof object.librarySettings[i] !== "object")
                                 throw TypeError(".google.api.Publishing.librarySettings: object expected");
-                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i]);
+                            message.librarySettings[i] = $root.google.api.ClientLibrarySettings.fromObject(object.librarySettings[i], long + 1);
                         }
                     }
                     if (object.protoReferenceDocumentationUri != null)
@@ -6475,7 +6780,7 @@
                     this.serviceClassNames = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -6561,9 +6866,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                JavaSettings.decode = function decode(reader, length, error) {
+                JavaSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.JavaSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -6590,19 +6899,21 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.serviceClassNames, key);
                                 message.serviceClassNames[key] = value;
                                 break;
                             }
                         case 3: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -6633,9 +6944,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                JavaSettings.verify = function verify(message) {
+                JavaSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.libraryPackage != null && message.hasOwnProperty("libraryPackage"))
                         if (!$util.isString(message.libraryPackage))
                             return "libraryPackage: string expected";
@@ -6648,7 +6963,7 @@
                                 return "serviceClassNames: string{k:string} expected";
                     }
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -6663,9 +6978,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.JavaSettings} JavaSettings
                  */
-                JavaSettings.fromObject = function fromObject(object) {
+                JavaSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.JavaSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.JavaSettings();
                     if (object.libraryPackage != null)
                         message.libraryPackage = String(object.libraryPackage);
@@ -6673,13 +6992,16 @@
                         if (typeof object.serviceClassNames !== "object")
                             throw TypeError(".google.api.JavaSettings.serviceClassNames: object expected");
                         message.serviceClassNames = {};
-                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.serviceClassNames), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.serviceClassNames, keys[i]);
                             message.serviceClassNames[keys[i]] = String(object.serviceClassNames[keys[i]]);
+                        }
                     }
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.JavaSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -6708,8 +7030,11 @@
                     var keys2;
                     if (message.serviceClassNames && (keys2 = Object.keys(message.serviceClassNames)).length) {
                         object.serviceClassNames = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.serviceClassNames, keys2[j]);
                             object.serviceClassNames[keys2[j]] = message.serviceClassNames[keys2[j]];
+                        }
                     }
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
@@ -6765,7 +7090,7 @@
                 function CppSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -6830,9 +7155,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CppSettings.decode = function decode(reader, length, error) {
+                CppSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.CppSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -6840,11 +7169,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -6875,11 +7204,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CppSettings.verify = function verify(message) {
+                CppSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -6894,14 +7227,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.CppSettings} CppSettings
                  */
-                CppSettings.fromObject = function fromObject(object) {
+                CppSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.CppSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.CppSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.CppSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -6975,7 +7312,7 @@
                 function PhpSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -7040,9 +7377,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PhpSettings.decode = function decode(reader, length, error) {
+                PhpSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PhpSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -7050,11 +7391,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -7085,11 +7426,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PhpSettings.verify = function verify(message) {
+                PhpSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -7104,14 +7449,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PhpSettings} PhpSettings
                  */
-                PhpSettings.fromObject = function fromObject(object) {
+                PhpSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PhpSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PhpSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PhpSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -7172,6 +7521,7 @@
                  * @memberof google.api
                  * @interface IPythonSettings
                  * @property {google.api.ICommonLanguageSettings|null} [common] PythonSettings common
+                 * @property {google.api.PythonSettings.IExperimentalFeatures|null} [experimentalFeatures] PythonSettings experimentalFeatures
                  */
     
                 /**
@@ -7185,7 +7535,7 @@
                 function PythonSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -7197,6 +7547,14 @@
                  */
                 PythonSettings.prototype.common = null;
     
+                /**
+                 * PythonSettings experimentalFeatures.
+                 * @member {google.api.PythonSettings.IExperimentalFeatures|null|undefined} experimentalFeatures
+                 * @memberof google.api.PythonSettings
+                 * @instance
+                 */
+                PythonSettings.prototype.experimentalFeatures = null;
+    
                 /**
                  * Creates a new PythonSettings instance using the specified properties.
                  * @function create
@@ -7223,6 +7581,8 @@
                         writer = $Writer.create();
                     if (message.common != null && Object.hasOwnProperty.call(message, "common"))
                         $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.experimentalFeatures != null && Object.hasOwnProperty.call(message, "experimentalFeatures"))
+                        $root.google.api.PythonSettings.ExperimentalFeatures.encode(message.experimentalFeatures, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                     return writer;
                 };
     
@@ -7250,9 +7610,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                PythonSettings.decode = function decode(reader, length, error) {
+                PythonSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -7260,11 +7624,15 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
+                        case 2: {
+                                message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -7295,14 +7663,23 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                PythonSettings.verify = function verify(message) {
+                PythonSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
+                    if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures")) {
+                        var error = $root.google.api.PythonSettings.ExperimentalFeatures.verify(message.experimentalFeatures, long + 1);
+                        if (error)
+                            return "experimentalFeatures." + error;
+                    }
                     return null;
                 };
     
@@ -7314,14 +7691,23 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.PythonSettings} PythonSettings
                  */
-                PythonSettings.fromObject = function fromObject(object) {
+                PythonSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.PythonSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.PythonSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.PythonSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
+                    }
+                    if (object.experimentalFeatures != null) {
+                        if (typeof object.experimentalFeatures !== "object")
+                            throw TypeError(".google.api.PythonSettings.experimentalFeatures: object expected");
+                        message.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.fromObject(object.experimentalFeatures, long + 1);
                     }
                     return message;
                 };
@@ -7339,10 +7725,14 @@
                     if (!options)
                         options = {};
                     var object = {};
-                    if (options.defaults)
+                    if (options.defaults) {
                         object.common = null;
+                        object.experimentalFeatures = null;
+                    }
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    if (message.experimentalFeatures != null && message.hasOwnProperty("experimentalFeatures"))
+                        object.experimentalFeatures = $root.google.api.PythonSettings.ExperimentalFeatures.toObject(message.experimentalFeatures, options);
                     return object;
                 };
     
@@ -7372,6 +7762,270 @@
                     return typeUrlPrefix + "/google.api.PythonSettings";
                 };
     
+                PythonSettings.ExperimentalFeatures = (function() {
+    
+                    /**
+                     * Properties of an ExperimentalFeatures.
+                     * @memberof google.api.PythonSettings
+                     * @interface IExperimentalFeatures
+                     * @property {boolean|null} [restAsyncIoEnabled] ExperimentalFeatures restAsyncIoEnabled
+                     * @property {boolean|null} [protobufPythonicTypesEnabled] ExperimentalFeatures protobufPythonicTypesEnabled
+                     * @property {boolean|null} [unversionedPackageDisabled] ExperimentalFeatures unversionedPackageDisabled
+                     */
+    
+                    /**
+                     * Constructs a new ExperimentalFeatures.
+                     * @memberof google.api.PythonSettings
+                     * @classdesc Represents an ExperimentalFeatures.
+                     * @implements IExperimentalFeatures
+                     * @constructor
+                     * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set
+                     */
+                    function ExperimentalFeatures(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * ExperimentalFeatures restAsyncIoEnabled.
+                     * @member {boolean} restAsyncIoEnabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.restAsyncIoEnabled = false;
+    
+                    /**
+                     * ExperimentalFeatures protobufPythonicTypesEnabled.
+                     * @member {boolean} protobufPythonicTypesEnabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.protobufPythonicTypesEnabled = false;
+    
+                    /**
+                     * ExperimentalFeatures unversionedPackageDisabled.
+                     * @member {boolean} unversionedPackageDisabled
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     */
+                    ExperimentalFeatures.prototype.unversionedPackageDisabled = false;
+    
+                    /**
+                     * Creates a new ExperimentalFeatures instance using the specified properties.
+                     * @function create
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures=} [properties] Properties to set
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures instance
+                     */
+                    ExperimentalFeatures.create = function create(properties) {
+                        return new ExperimentalFeatures(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified ExperimentalFeatures message. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExperimentalFeatures.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.restAsyncIoEnabled != null && Object.hasOwnProperty.call(message, "restAsyncIoEnabled"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).bool(message.restAsyncIoEnabled);
+                        if (message.protobufPythonicTypesEnabled != null && Object.hasOwnProperty.call(message, "protobufPythonicTypesEnabled"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).bool(message.protobufPythonicTypesEnabled);
+                        if (message.unversionedPackageDisabled != null && Object.hasOwnProperty.call(message, "unversionedPackageDisabled"))
+                            writer.uint32(/* id 3, wireType 0 =*/24).bool(message.unversionedPackageDisabled);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified ExperimentalFeatures message, length delimited. Does not implicitly {@link google.api.PythonSettings.ExperimentalFeatures.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.IExperimentalFeatures} message ExperimentalFeatures message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    ExperimentalFeatures.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes an ExperimentalFeatures message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExperimentalFeatures.decode = function decode(reader, length, error, long) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.PythonSettings.ExperimentalFeatures();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.restAsyncIoEnabled = reader.bool();
+                                    break;
+                                }
+                            case 2: {
+                                    message.protobufPythonicTypesEnabled = reader.bool();
+                                    break;
+                                }
+                            case 3: {
+                                    message.unversionedPackageDisabled = reader.bool();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7, long);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes an ExperimentalFeatures message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    ExperimentalFeatures.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies an ExperimentalFeatures message.
+                     * @function verify
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    ExperimentalFeatures.verify = function verify(message, long) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
+                        if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
+                            if (typeof message.restAsyncIoEnabled !== "boolean")
+                                return "restAsyncIoEnabled: boolean expected";
+                        if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled"))
+                            if (typeof message.protobufPythonicTypesEnabled !== "boolean")
+                                return "protobufPythonicTypesEnabled: boolean expected";
+                        if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled"))
+                            if (typeof message.unversionedPackageDisabled !== "boolean")
+                                return "unversionedPackageDisabled: boolean expected";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates an ExperimentalFeatures message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.api.PythonSettings.ExperimentalFeatures} ExperimentalFeatures
+                     */
+                    ExperimentalFeatures.fromObject = function fromObject(object, long) {
+                        if (object instanceof $root.google.api.PythonSettings.ExperimentalFeatures)
+                            return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var message = new $root.google.api.PythonSettings.ExperimentalFeatures();
+                        if (object.restAsyncIoEnabled != null)
+                            message.restAsyncIoEnabled = Boolean(object.restAsyncIoEnabled);
+                        if (object.protobufPythonicTypesEnabled != null)
+                            message.protobufPythonicTypesEnabled = Boolean(object.protobufPythonicTypesEnabled);
+                        if (object.unversionedPackageDisabled != null)
+                            message.unversionedPackageDisabled = Boolean(object.unversionedPackageDisabled);
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an ExperimentalFeatures message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {google.api.PythonSettings.ExperimentalFeatures} message ExperimentalFeatures
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    ExperimentalFeatures.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.restAsyncIoEnabled = false;
+                            object.protobufPythonicTypesEnabled = false;
+                            object.unversionedPackageDisabled = false;
+                        }
+                        if (message.restAsyncIoEnabled != null && message.hasOwnProperty("restAsyncIoEnabled"))
+                            object.restAsyncIoEnabled = message.restAsyncIoEnabled;
+                        if (message.protobufPythonicTypesEnabled != null && message.hasOwnProperty("protobufPythonicTypesEnabled"))
+                            object.protobufPythonicTypesEnabled = message.protobufPythonicTypesEnabled;
+                        if (message.unversionedPackageDisabled != null && message.hasOwnProperty("unversionedPackageDisabled"))
+                            object.unversionedPackageDisabled = message.unversionedPackageDisabled;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this ExperimentalFeatures to JSON.
+                     * @function toJSON
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    ExperimentalFeatures.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for ExperimentalFeatures
+                     * @function getTypeUrl
+                     * @memberof google.api.PythonSettings.ExperimentalFeatures
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    ExperimentalFeatures.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.api.PythonSettings.ExperimentalFeatures";
+                    };
+    
+                    return ExperimentalFeatures;
+                })();
+    
                 return PythonSettings;
             })();
     
@@ -7395,7 +8049,7 @@
                 function NodeSettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -7460,9 +8114,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                NodeSettings.decode = function decode(reader, length, error) {
+                NodeSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.NodeSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -7470,11 +8128,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -7505,11 +8163,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                NodeSettings.verify = function verify(message) {
+                NodeSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -7524,14 +8186,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.NodeSettings} NodeSettings
                  */
-                NodeSettings.fromObject = function fromObject(object) {
+                NodeSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.NodeSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.NodeSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.NodeSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -7615,7 +8281,7 @@
                     this.handwrittenSignatures = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -7735,9 +8401,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DotnetSettings.decode = function decode(reader, length, error) {
+                DotnetSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.DotnetSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -7745,7 +8415,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 2: {
@@ -7764,10 +8434,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
                                 message.renamedServices[key] = value;
                                 break;
                             }
@@ -7787,10 +8459,12 @@
                                         value = reader.string();
                                         break;
                                     default:
-                                        reader.skipType(tag2 & 7);
+                                        reader.skipType(tag2 & 7, long);
                                         break;
                                     }
                                 }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedResources, key);
                                 message.renamedResources[key] = value;
                                 break;
                             }
@@ -7813,7 +8487,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -7844,11 +8518,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DotnetSettings.verify = function verify(message) {
+                DotnetSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -7900,28 +8578,38 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.DotnetSettings} DotnetSettings
                  */
-                DotnetSettings.fromObject = function fromObject(object) {
+                DotnetSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.DotnetSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.DotnetSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.DotnetSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     if (object.renamedServices) {
                         if (typeof object.renamedServices !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedServices: object expected");
                         message.renamedServices = {};
-                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
                             message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     if (object.renamedResources) {
                         if (typeof object.renamedResources !== "object")
                             throw TypeError(".google.api.DotnetSettings.renamedResources: object expected");
                         message.renamedResources = {};
-                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i)
+                        for (var keys = Object.keys(object.renamedResources), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedResources, keys[i]);
                             message.renamedResources[keys[i]] = String(object.renamedResources[keys[i]]);
+                        }
                     }
                     if (object.ignoredResources) {
                         if (!Array.isArray(object.ignoredResources))
@@ -7976,13 +8664,19 @@
                     var keys2;
                     if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
                         object.renamedServices = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
                             object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
                     }
                     if (message.renamedResources && (keys2 = Object.keys(message.renamedResources)).length) {
                         object.renamedResources = {};
-                        for (var j = 0; j < keys2.length; ++j)
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedResources, keys2[j]);
                             object.renamedResources[keys2[j]] = message.renamedResources[keys2[j]];
+                        }
                     }
                     if (message.ignoredResources && message.ignoredResources.length) {
                         object.ignoredResources = [];
@@ -8051,7 +8745,7 @@
                 function RubySettings(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -8116,9 +8810,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                RubySettings.decode = function decode(reader, length, error) {
+                RubySettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.RubySettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -8126,11 +8824,11 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -8161,11 +8859,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                RubySettings.verify = function verify(message) {
+                RubySettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
@@ -8180,14 +8882,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.RubySettings} RubySettings
                  */
-                RubySettings.fromObject = function fromObject(object) {
+                RubySettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.RubySettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.RubySettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.RubySettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
                     }
                     return message;
                 };
@@ -8248,6 +8954,7 @@
                  * @memberof google.api
                  * @interface IGoSettings
                  * @property {google.api.ICommonLanguageSettings|null} [common] GoSettings common
+                 * @property {Object.<string,string>|null} [renamedServices] GoSettings renamedServices
                  */
     
                 /**
@@ -8259,9 +8966,10 @@
                  * @param {google.api.IGoSettings=} [properties] Properties to set
                  */
                 function GoSettings(properties) {
+                    this.renamedServices = {};
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -8273,6 +8981,14 @@
                  */
                 GoSettings.prototype.common = null;
     
+                /**
+                 * GoSettings renamedServices.
+                 * @member {Object.<string,string>} renamedServices
+                 * @memberof google.api.GoSettings
+                 * @instance
+                 */
+                GoSettings.prototype.renamedServices = $util.emptyObject;
+    
                 /**
                  * Creates a new GoSettings instance using the specified properties.
                  * @function create
@@ -8299,6 +9015,9 @@
                         writer = $Writer.create();
                     if (message.common != null && Object.hasOwnProperty.call(message, "common"))
                         $root.google.api.CommonLanguageSettings.encode(message.common, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
+                    if (message.renamedServices != null && Object.hasOwnProperty.call(message, "renamedServices"))
+                        for (var keys = Object.keys(message.renamedServices), i = 0; i < keys.length; ++i)
+                            writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.renamedServices[keys[i]]).ldelim();
                     return writer;
                 };
     
@@ -8326,21 +9045,50 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GoSettings.decode = function decode(reader, length, error) {
+                GoSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
-                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings();
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.GoSettings(), key, value;
                     while (reader.pos < end) {
                         var tag = reader.uint32();
                         if (tag === error)
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32());
+                                message.common = $root.google.api.CommonLanguageSettings.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
+                        case 2: {
+                                if (message.renamedServices === $util.emptyObject)
+                                    message.renamedServices = {};
+                                var end2 = reader.uint32() + reader.pos;
+                                key = "";
+                                value = "";
+                                while (reader.pos < end2) {
+                                    var tag2 = reader.uint32();
+                                    switch (tag2 >>> 3) {
+                                    case 1:
+                                        key = reader.string();
+                                        break;
+                                    case 2:
+                                        value = reader.string();
+                                        break;
+                                    default:
+                                        reader.skipType(tag2 & 7, long);
+                                        break;
+                                    }
+                                }
+                                if (key === "__proto__")
+                                    $util.makeProp(message.renamedServices, key);
+                                message.renamedServices[key] = value;
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -8371,14 +9119,26 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GoSettings.verify = function verify(message) {
+                GoSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.common != null && message.hasOwnProperty("common")) {
-                        var error = $root.google.api.CommonLanguageSettings.verify(message.common);
+                        var error = $root.google.api.CommonLanguageSettings.verify(message.common, long + 1);
                         if (error)
                             return "common." + error;
                     }
+                    if (message.renamedServices != null && message.hasOwnProperty("renamedServices")) {
+                        if (!$util.isObject(message.renamedServices))
+                            return "renamedServices: object expected";
+                        var key = Object.keys(message.renamedServices);
+                        for (var i = 0; i < key.length; ++i)
+                            if (!$util.isString(message.renamedServices[key[i]]))
+                                return "renamedServices: string{k:string} expected";
+                    }
                     return null;
                 };
     
@@ -8390,14 +9150,28 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.GoSettings} GoSettings
                  */
-                GoSettings.fromObject = function fromObject(object) {
+                GoSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.GoSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.GoSettings();
                     if (object.common != null) {
                         if (typeof object.common !== "object")
                             throw TypeError(".google.api.GoSettings.common: object expected");
-                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common);
+                        message.common = $root.google.api.CommonLanguageSettings.fromObject(object.common, long + 1);
+                    }
+                    if (object.renamedServices) {
+                        if (typeof object.renamedServices !== "object")
+                            throw TypeError(".google.api.GoSettings.renamedServices: object expected");
+                        message.renamedServices = {};
+                        for (var keys = Object.keys(object.renamedServices), i = 0; i < keys.length; ++i) {
+                            if (keys[i] === "__proto__")
+                                $util.makeProp(message.renamedServices, keys[i]);
+                            message.renamedServices[keys[i]] = String(object.renamedServices[keys[i]]);
+                        }
                     }
                     return message;
                 };
@@ -8415,10 +9189,21 @@
                     if (!options)
                         options = {};
                     var object = {};
+                    if (options.objects || options.defaults)
+                        object.renamedServices = {};
                     if (options.defaults)
                         object.common = null;
                     if (message.common != null && message.hasOwnProperty("common"))
                         object.common = $root.google.api.CommonLanguageSettings.toObject(message.common, options);
+                    var keys2;
+                    if (message.renamedServices && (keys2 = Object.keys(message.renamedServices)).length) {
+                        object.renamedServices = {};
+                        for (var j = 0; j < keys2.length; ++j) {
+                            if (keys2[j] === "__proto__")
+                                $util.makeProp(object.renamedServices, keys2[j]);
+                            object.renamedServices[keys2[j]] = message.renamedServices[keys2[j]];
+                        }
+                    }
                     return object;
                 };
     
@@ -8474,7 +9259,7 @@
                     this.autoPopulatedFields = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -8560,9 +9345,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodSettings.decode = function decode(reader, length, error) {
+                MethodSettings.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -8574,7 +9363,7 @@
                                 break;
                             }
                         case 2: {
-                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32());
+                                message.longRunning = $root.google.api.MethodSettings.LongRunning.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -8584,7 +9373,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -8615,14 +9404,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodSettings.verify = function verify(message) {
+                MethodSettings.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.selector != null && message.hasOwnProperty("selector"))
                         if (!$util.isString(message.selector))
                             return "selector: string expected";
                     if (message.longRunning != null && message.hasOwnProperty("longRunning")) {
-                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning);
+                        var error = $root.google.api.MethodSettings.LongRunning.verify(message.longRunning, long + 1);
                         if (error)
                             return "longRunning." + error;
                     }
@@ -8644,16 +9437,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.MethodSettings} MethodSettings
                  */
-                MethodSettings.fromObject = function fromObject(object) {
+                MethodSettings.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.MethodSettings)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.MethodSettings();
                     if (object.selector != null)
                         message.selector = String(object.selector);
                     if (object.longRunning != null) {
                         if (typeof object.longRunning !== "object")
                             throw TypeError(".google.api.MethodSettings.longRunning: object expected");
-                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning);
+                        message.longRunning = $root.google.api.MethodSettings.LongRunning.fromObject(object.longRunning, long + 1);
                     }
                     if (object.autoPopulatedFields) {
                         if (!Array.isArray(object.autoPopulatedFields))
@@ -8745,7 +9542,7 @@
                     function LongRunning(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -8840,9 +9637,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    LongRunning.decode = function decode(reader, length, error) {
+                    LongRunning.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.MethodSettings.LongRunning();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -8850,7 +9651,7 @@
                                 break;
                             switch (tag >>> 3) {
                             case 1: {
-                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.initialPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 2: {
@@ -8858,15 +9659,15 @@
                                     break;
                                 }
                             case 3: {
-                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.maxPollDelay = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             case 4: {
-                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                    message.totalPollTimeout = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -8897,11 +9698,15 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    LongRunning.verify = function verify(message) {
+                    LongRunning.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.initialPollDelay != null && message.hasOwnProperty("initialPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.initialPollDelay, long + 1);
                             if (error)
                                 return "initialPollDelay." + error;
                         }
@@ -8909,12 +9714,12 @@
                             if (typeof message.pollDelayMultiplier !== "number")
                                 return "pollDelayMultiplier: number expected";
                         if (message.maxPollDelay != null && message.hasOwnProperty("maxPollDelay")) {
-                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay);
+                            var error = $root.google.protobuf.Duration.verify(message.maxPollDelay, long + 1);
                             if (error)
                                 return "maxPollDelay." + error;
                         }
                         if (message.totalPollTimeout != null && message.hasOwnProperty("totalPollTimeout")) {
-                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout);
+                            var error = $root.google.protobuf.Duration.verify(message.totalPollTimeout, long + 1);
                             if (error)
                                 return "totalPollTimeout." + error;
                         }
@@ -8929,26 +9734,30 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.api.MethodSettings.LongRunning} LongRunning
                      */
-                    LongRunning.fromObject = function fromObject(object) {
+                    LongRunning.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.api.MethodSettings.LongRunning)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.api.MethodSettings.LongRunning();
                         if (object.initialPollDelay != null) {
                             if (typeof object.initialPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.initialPollDelay: object expected");
-                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay);
+                            message.initialPollDelay = $root.google.protobuf.Duration.fromObject(object.initialPollDelay, long + 1);
                         }
                         if (object.pollDelayMultiplier != null)
                             message.pollDelayMultiplier = Number(object.pollDelayMultiplier);
                         if (object.maxPollDelay != null) {
                             if (typeof object.maxPollDelay !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.maxPollDelay: object expected");
-                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay);
+                            message.maxPollDelay = $root.google.protobuf.Duration.fromObject(object.maxPollDelay, long + 1);
                         }
                         if (object.totalPollTimeout != null) {
                             if (typeof object.totalPollTimeout !== "object")
                                 throw TypeError(".google.api.MethodSettings.LongRunning.totalPollTimeout: object expected");
-                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout);
+                            message.totalPollTimeout = $root.google.protobuf.Duration.fromObject(object.totalPollTimeout, long + 1);
                         }
                         return message;
                     };
@@ -9057,26 +9866,283 @@
                 return values;
             })();
     
-            /**
-             * LaunchStage enum.
-             * @name google.api.LaunchStage
-             * @enum {number}
-             * @property {number} LAUNCH_STAGE_UNSPECIFIED=0 LAUNCH_STAGE_UNSPECIFIED value
-             * @property {number} UNIMPLEMENTED=6 UNIMPLEMENTED value
-             * @property {number} PRELAUNCH=7 PRELAUNCH value
-             * @property {number} EARLY_ACCESS=1 EARLY_ACCESS value
-             * @property {number} ALPHA=2 ALPHA value
-             * @property {number} BETA=3 BETA value
-             * @property {number} GA=4 GA value
-             * @property {number} DEPRECATED=5 DEPRECATED value
-             */
-            api.LaunchStage = (function() {
-                var valuesById = {}, values = Object.create(valuesById);
-                values[valuesById[0] = "LAUNCH_STAGE_UNSPECIFIED"] = 0;
-                values[valuesById[6] = "UNIMPLEMENTED"] = 6;
-                values[valuesById[7] = "PRELAUNCH"] = 7;
-                values[valuesById[1] = "EARLY_ACCESS"] = 1;
-                values[valuesById[2] = "ALPHA"] = 2;
+            api.SelectiveGapicGeneration = (function() {
+    
+                /**
+                 * Properties of a SelectiveGapicGeneration.
+                 * @memberof google.api
+                 * @interface ISelectiveGapicGeneration
+                 * @property {Array.<string>|null} [methods] SelectiveGapicGeneration methods
+                 * @property {boolean|null} [generateOmittedAsInternal] SelectiveGapicGeneration generateOmittedAsInternal
+                 */
+    
+                /**
+                 * Constructs a new SelectiveGapicGeneration.
+                 * @memberof google.api
+                 * @classdesc Represents a SelectiveGapicGeneration.
+                 * @implements ISelectiveGapicGeneration
+                 * @constructor
+                 * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set
+                 */
+                function SelectiveGapicGeneration(properties) {
+                    this.methods = [];
+                    if (properties)
+                        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                this[keys[i]] = properties[keys[i]];
+                }
+    
+                /**
+                 * SelectiveGapicGeneration methods.
+                 * @member {Array.<string>} methods
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 */
+                SelectiveGapicGeneration.prototype.methods = $util.emptyArray;
+    
+                /**
+                 * SelectiveGapicGeneration generateOmittedAsInternal.
+                 * @member {boolean} generateOmittedAsInternal
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 */
+                SelectiveGapicGeneration.prototype.generateOmittedAsInternal = false;
+    
+                /**
+                 * Creates a new SelectiveGapicGeneration instance using the specified properties.
+                 * @function create
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration=} [properties] Properties to set
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration instance
+                 */
+                SelectiveGapicGeneration.create = function create(properties) {
+                    return new SelectiveGapicGeneration(properties);
+                };
+    
+                /**
+                 * Encodes the specified SelectiveGapicGeneration message. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+                 * @function encode
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SelectiveGapicGeneration.encode = function encode(message, writer) {
+                    if (!writer)
+                        writer = $Writer.create();
+                    if (message.methods != null && message.methods.length)
+                        for (var i = 0; i < message.methods.length; ++i)
+                            writer.uint32(/* id 1, wireType 2 =*/10).string(message.methods[i]);
+                    if (message.generateOmittedAsInternal != null && Object.hasOwnProperty.call(message, "generateOmittedAsInternal"))
+                        writer.uint32(/* id 2, wireType 0 =*/16).bool(message.generateOmittedAsInternal);
+                    return writer;
+                };
+    
+                /**
+                 * Encodes the specified SelectiveGapicGeneration message, length delimited. Does not implicitly {@link google.api.SelectiveGapicGeneration.verify|verify} messages.
+                 * @function encodeDelimited
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.ISelectiveGapicGeneration} message SelectiveGapicGeneration message or plain object to encode
+                 * @param {$protobuf.Writer} [writer] Writer to encode to
+                 * @returns {$protobuf.Writer} Writer
+                 */
+                SelectiveGapicGeneration.encodeDelimited = function encodeDelimited(message, writer) {
+                    return this.encode(message, writer).ldelim();
+                };
+    
+                /**
+                 * Decodes a SelectiveGapicGeneration message from the specified reader or buffer.
+                 * @function decode
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @param {number} [length] Message length if known beforehand
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SelectiveGapicGeneration.decode = function decode(reader, length, error, long) {
+                    if (!(reader instanceof $Reader))
+                        reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
+                    var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.SelectiveGapicGeneration();
+                    while (reader.pos < end) {
+                        var tag = reader.uint32();
+                        if (tag === error)
+                            break;
+                        switch (tag >>> 3) {
+                        case 1: {
+                                if (!(message.methods && message.methods.length))
+                                    message.methods = [];
+                                message.methods.push(reader.string());
+                                break;
+                            }
+                        case 2: {
+                                message.generateOmittedAsInternal = reader.bool();
+                                break;
+                            }
+                        default:
+                            reader.skipType(tag & 7, long);
+                            break;
+                        }
+                    }
+                    return message;
+                };
+    
+                /**
+                 * Decodes a SelectiveGapicGeneration message from the specified reader or buffer, length delimited.
+                 * @function decodeDelimited
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 * @throws {Error} If the payload is not a reader or valid buffer
+                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                 */
+                SelectiveGapicGeneration.decodeDelimited = function decodeDelimited(reader) {
+                    if (!(reader instanceof $Reader))
+                        reader = new $Reader(reader);
+                    return this.decode(reader, reader.uint32());
+                };
+    
+                /**
+                 * Verifies a SelectiveGapicGeneration message.
+                 * @function verify
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {Object.<string,*>} message Plain object to verify
+                 * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                 */
+                SelectiveGapicGeneration.verify = function verify(message, long) {
+                    if (typeof message !== "object" || message === null)
+                        return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
+                    if (message.methods != null && message.hasOwnProperty("methods")) {
+                        if (!Array.isArray(message.methods))
+                            return "methods: array expected";
+                        for (var i = 0; i < message.methods.length; ++i)
+                            if (!$util.isString(message.methods[i]))
+                                return "methods: string[] expected";
+                    }
+                    if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal"))
+                        if (typeof message.generateOmittedAsInternal !== "boolean")
+                            return "generateOmittedAsInternal: boolean expected";
+                    return null;
+                };
+    
+                /**
+                 * Creates a SelectiveGapicGeneration message from a plain object. Also converts values to their respective internal types.
+                 * @function fromObject
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {Object.<string,*>} object Plain object
+                 * @returns {google.api.SelectiveGapicGeneration} SelectiveGapicGeneration
+                 */
+                SelectiveGapicGeneration.fromObject = function fromObject(object, long) {
+                    if (object instanceof $root.google.api.SelectiveGapicGeneration)
+                        return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
+                    var message = new $root.google.api.SelectiveGapicGeneration();
+                    if (object.methods) {
+                        if (!Array.isArray(object.methods))
+                            throw TypeError(".google.api.SelectiveGapicGeneration.methods: array expected");
+                        message.methods = [];
+                        for (var i = 0; i < object.methods.length; ++i)
+                            message.methods[i] = String(object.methods[i]);
+                    }
+                    if (object.generateOmittedAsInternal != null)
+                        message.generateOmittedAsInternal = Boolean(object.generateOmittedAsInternal);
+                    return message;
+                };
+    
+                /**
+                 * Creates a plain object from a SelectiveGapicGeneration message. Also converts values to other types if specified.
+                 * @function toObject
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {google.api.SelectiveGapicGeneration} message SelectiveGapicGeneration
+                 * @param {$protobuf.IConversionOptions} [options] Conversion options
+                 * @returns {Object.<string,*>} Plain object
+                 */
+                SelectiveGapicGeneration.toObject = function toObject(message, options) {
+                    if (!options)
+                        options = {};
+                    var object = {};
+                    if (options.arrays || options.defaults)
+                        object.methods = [];
+                    if (options.defaults)
+                        object.generateOmittedAsInternal = false;
+                    if (message.methods && message.methods.length) {
+                        object.methods = [];
+                        for (var j = 0; j < message.methods.length; ++j)
+                            object.methods[j] = message.methods[j];
+                    }
+                    if (message.generateOmittedAsInternal != null && message.hasOwnProperty("generateOmittedAsInternal"))
+                        object.generateOmittedAsInternal = message.generateOmittedAsInternal;
+                    return object;
+                };
+    
+                /**
+                 * Converts this SelectiveGapicGeneration to JSON.
+                 * @function toJSON
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @instance
+                 * @returns {Object.<string,*>} JSON object
+                 */
+                SelectiveGapicGeneration.prototype.toJSON = function toJSON() {
+                    return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                };
+    
+                /**
+                 * Gets the default type url for SelectiveGapicGeneration
+                 * @function getTypeUrl
+                 * @memberof google.api.SelectiveGapicGeneration
+                 * @static
+                 * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                 * @returns {string} The default type url
+                 */
+                SelectiveGapicGeneration.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    if (typeUrlPrefix === undefined) {
+                        typeUrlPrefix = "type.googleapis.com";
+                    }
+                    return typeUrlPrefix + "/google.api.SelectiveGapicGeneration";
+                };
+    
+                return SelectiveGapicGeneration;
+            })();
+    
+            /**
+             * LaunchStage enum.
+             * @name google.api.LaunchStage
+             * @enum {number}
+             * @property {number} LAUNCH_STAGE_UNSPECIFIED=0 LAUNCH_STAGE_UNSPECIFIED value
+             * @property {number} UNIMPLEMENTED=6 UNIMPLEMENTED value
+             * @property {number} PRELAUNCH=7 PRELAUNCH value
+             * @property {number} EARLY_ACCESS=1 EARLY_ACCESS value
+             * @property {number} ALPHA=2 ALPHA value
+             * @property {number} BETA=3 BETA value
+             * @property {number} GA=4 GA value
+             * @property {number} DEPRECATED=5 DEPRECATED value
+             */
+            api.LaunchStage = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "LAUNCH_STAGE_UNSPECIFIED"] = 0;
+                values[valuesById[6] = "UNIMPLEMENTED"] = 6;
+                values[valuesById[7] = "PRELAUNCH"] = 7;
+                values[valuesById[1] = "EARLY_ACCESS"] = 1;
+                values[valuesById[2] = "ALPHA"] = 2;
                 values[valuesById[3] = "BETA"] = 3;
                 values[valuesById[4] = "GA"] = 4;
                 values[valuesById[5] = "DEPRECATED"] = 5;
@@ -9139,7 +10205,7 @@
                     this.style = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -9269,9 +10335,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceDescriptor.decode = function decode(reader, length, error) {
+                ResourceDescriptor.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceDescriptor();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -9316,7 +10386,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -9347,9 +10417,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceDescriptor.verify = function verify(message) {
+                ResourceDescriptor.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -9401,9 +10475,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceDescriptor} ResourceDescriptor
                  */
-                ResourceDescriptor.fromObject = function fromObject(object) {
+                ResourceDescriptor.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceDescriptor)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceDescriptor();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -9591,7 +10669,7 @@
                 function ResourceReference(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -9666,9 +10744,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ResourceReference.decode = function decode(reader, length, error) {
+                ResourceReference.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.api.ResourceReference();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -9684,7 +10766,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -9715,9 +10797,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ResourceReference.verify = function verify(message) {
+                ResourceReference.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type != null && message.hasOwnProperty("type"))
                         if (!$util.isString(message.type))
                             return "type: string expected";
@@ -9735,9 +10821,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.api.ResourceReference} ResourceReference
                  */
-                ResourceReference.fromObject = function fromObject(object) {
+                ResourceReference.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.api.ResourceReference)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.api.ResourceReference();
                     if (object.type != null)
                         message.type = String(object.type);
@@ -9832,7 +10922,7 @@
                     this.file = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -9898,9 +10988,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorSet.decode = function decode(reader, length, error) {
+                FileDescriptorSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -9910,11 +11004,11 @@
                         case 1: {
                                 if (!(message.file && message.file.length))
                                     message.file = [];
-                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32()));
+                                message.file.push($root.google.protobuf.FileDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -9945,14 +11039,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorSet.verify = function verify(message) {
+                FileDescriptorSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.file != null && message.hasOwnProperty("file")) {
                         if (!Array.isArray(message.file))
                             return "file: array expected";
                         for (var i = 0; i < message.file.length; ++i) {
-                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i]);
+                            var error = $root.google.protobuf.FileDescriptorProto.verify(message.file[i], long + 1);
                             if (error)
                                 return "file." + error;
                         }
@@ -9968,9 +11066,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorSet} FileDescriptorSet
                  */
-                FileDescriptorSet.fromObject = function fromObject(object) {
+                FileDescriptorSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorSet();
                     if (object.file) {
                         if (!Array.isArray(object.file))
@@ -9979,7 +11081,7 @@
                         for (var i = 0; i < object.file.length; ++i) {
                             if (typeof object.file[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorSet.file: object expected");
-                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i]);
+                            message.file[i] = $root.google.protobuf.FileDescriptorProto.fromObject(object.file[i], long + 1);
                         }
                     }
                     return message;
@@ -10042,6 +11144,7 @@
              * @name google.protobuf.Edition
              * @enum {number}
              * @property {number} EDITION_UNKNOWN=0 EDITION_UNKNOWN value
+             * @property {number} EDITION_LEGACY=900 EDITION_LEGACY value
              * @property {number} EDITION_PROTO2=998 EDITION_PROTO2 value
              * @property {number} EDITION_PROTO3=999 EDITION_PROTO3 value
              * @property {number} EDITION_2023=1000 EDITION_2023 value
@@ -10056,6 +11159,7 @@
             protobuf.Edition = (function() {
                 var valuesById = {}, values = Object.create(valuesById);
                 values[valuesById[0] = "EDITION_UNKNOWN"] = 0;
+                values[valuesById[900] = "EDITION_LEGACY"] = 900;
                 values[valuesById[998] = "EDITION_PROTO2"] = 998;
                 values[valuesById[999] = "EDITION_PROTO3"] = 999;
                 values[valuesById[1000] = "EDITION_2023"] = 1000;
@@ -10080,6 +11184,7 @@
                  * @property {Array.<string>|null} [dependency] FileDescriptorProto dependency
                  * @property {Array.<number>|null} [publicDependency] FileDescriptorProto publicDependency
                  * @property {Array.<number>|null} [weakDependency] FileDescriptorProto weakDependency
+                 * @property {Array.<string>|null} [optionDependency] FileDescriptorProto optionDependency
                  * @property {Array.<google.protobuf.IDescriptorProto>|null} [messageType] FileDescriptorProto messageType
                  * @property {Array.<google.protobuf.IEnumDescriptorProto>|null} [enumType] FileDescriptorProto enumType
                  * @property {Array.<google.protobuf.IServiceDescriptorProto>|null} [service] FileDescriptorProto service
@@ -10102,13 +11207,14 @@
                     this.dependency = [];
                     this.publicDependency = [];
                     this.weakDependency = [];
+                    this.optionDependency = [];
                     this.messageType = [];
                     this.enumType = [];
                     this.service = [];
                     this.extension = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -10152,6 +11258,14 @@
                  */
                 FileDescriptorProto.prototype.weakDependency = $util.emptyArray;
     
+                /**
+                 * FileDescriptorProto optionDependency.
+                 * @member {Array.<string>} optionDependency
+                 * @memberof google.protobuf.FileDescriptorProto
+                 * @instance
+                 */
+                FileDescriptorProto.prototype.optionDependency = $util.emptyArray;
+    
                 /**
                  * FileDescriptorProto messageType.
                  * @member {Array.<google.protobuf.IDescriptorProto>} messageType
@@ -10273,6 +11387,9 @@
                         writer.uint32(/* id 12, wireType 2 =*/98).string(message.syntax);
                     if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
                         writer.uint32(/* id 14, wireType 0 =*/112).int32(message.edition);
+                    if (message.optionDependency != null && message.optionDependency.length)
+                        for (var i = 0; i < message.optionDependency.length; ++i)
+                            writer.uint32(/* id 15, wireType 2 =*/122).string(message.optionDependency[i]);
                     return writer;
                 };
     
@@ -10300,9 +11417,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileDescriptorProto.decode = function decode(reader, length, error) {
+                FileDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -10345,36 +11466,42 @@
                                     message.weakDependency.push(reader.int32());
                                 break;
                             }
+                        case 15: {
+                                if (!(message.optionDependency && message.optionDependency.length))
+                                    message.optionDependency = [];
+                                message.optionDependency.push(reader.string());
+                                break;
+                            }
                         case 4: {
                                 if (!(message.messageType && message.messageType.length))
                                     message.messageType = [];
-                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.messageType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.service && message.service.length))
                                     message.service = [];
-                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32()));
+                                message.service.push($root.google.protobuf.ServiceDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FileOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
-                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32());
+                                message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 12: {
@@ -10386,7 +11513,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -10417,9 +11544,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileDescriptorProto.verify = function verify(message) {
+                FileDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -10447,11 +11578,18 @@
                             if (!$util.isInteger(message.weakDependency[i]))
                                 return "weakDependency: integer[] expected";
                     }
+                    if (message.optionDependency != null && message.hasOwnProperty("optionDependency")) {
+                        if (!Array.isArray(message.optionDependency))
+                            return "optionDependency: array expected";
+                        for (var i = 0; i < message.optionDependency.length; ++i)
+                            if (!$util.isString(message.optionDependency[i]))
+                                return "optionDependency: string[] expected";
+                    }
                     if (message.messageType != null && message.hasOwnProperty("messageType")) {
                         if (!Array.isArray(message.messageType))
                             return "messageType: array expected";
                         for (var i = 0; i < message.messageType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.messageType[i], long + 1);
                             if (error)
                                 return "messageType." + error;
                         }
@@ -10460,7 +11598,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -10469,7 +11607,7 @@
                         if (!Array.isArray(message.service))
                             return "service: array expected";
                         for (var i = 0; i < message.service.length; ++i) {
-                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i]);
+                            var error = $root.google.protobuf.ServiceDescriptorProto.verify(message.service[i], long + 1);
                             if (error)
                                 return "service." + error;
                         }
@@ -10478,18 +11616,18 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FileOptions.verify(message.options);
+                        var error = $root.google.protobuf.FileOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
                     if (message.sourceCodeInfo != null && message.hasOwnProperty("sourceCodeInfo")) {
-                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo);
+                        var error = $root.google.protobuf.SourceCodeInfo.verify(message.sourceCodeInfo, long + 1);
                         if (error)
                             return "sourceCodeInfo." + error;
                     }
@@ -10501,6 +11639,7 @@
                         default:
                             return "edition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -10524,9 +11663,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileDescriptorProto} FileDescriptorProto
                  */
-                FileDescriptorProto.fromObject = function fromObject(object) {
+                FileDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -10553,6 +11696,13 @@
                         for (var i = 0; i < object.weakDependency.length; ++i)
                             message.weakDependency[i] = object.weakDependency[i] | 0;
                     }
+                    if (object.optionDependency) {
+                        if (!Array.isArray(object.optionDependency))
+                            throw TypeError(".google.protobuf.FileDescriptorProto.optionDependency: array expected");
+                        message.optionDependency = [];
+                        for (var i = 0; i < object.optionDependency.length; ++i)
+                            message.optionDependency[i] = String(object.optionDependency[i]);
+                    }
                     if (object.messageType) {
                         if (!Array.isArray(object.messageType))
                             throw TypeError(".google.protobuf.FileDescriptorProto.messageType: array expected");
@@ -10560,7 +11710,7 @@
                         for (var i = 0; i < object.messageType.length; ++i) {
                             if (typeof object.messageType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.messageType: object expected");
-                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i]);
+                            message.messageType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.messageType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -10570,7 +11720,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.service) {
@@ -10580,7 +11730,7 @@
                         for (var i = 0; i < object.service.length; ++i) {
                             if (typeof object.service[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.service: object expected");
-                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i]);
+                            message.service[i] = $root.google.protobuf.ServiceDescriptorProto.fromObject(object.service[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -10590,18 +11740,18 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.FileDescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FileOptions.fromObject(object.options, long + 1);
                     }
                     if (object.sourceCodeInfo != null) {
                         if (typeof object.sourceCodeInfo !== "object")
                             throw TypeError(".google.protobuf.FileDescriptorProto.sourceCodeInfo: object expected");
-                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo);
+                        message.sourceCodeInfo = $root.google.protobuf.SourceCodeInfo.fromObject(object.sourceCodeInfo, long + 1);
                     }
                     if (object.syntax != null)
                         message.syntax = String(object.syntax);
@@ -10616,6 +11766,10 @@
                     case 0:
                         message.edition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.edition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.edition = 998;
@@ -10681,6 +11835,7 @@
                         object.extension = [];
                         object.publicDependency = [];
                         object.weakDependency = [];
+                        object.optionDependency = [];
                     }
                     if (options.defaults) {
                         object.name = "";
@@ -10737,6 +11892,11 @@
                         object.syntax = message.syntax;
                     if (message.edition != null && message.hasOwnProperty("edition"))
                         object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                    if (message.optionDependency && message.optionDependency.length) {
+                        object.optionDependency = [];
+                        for (var j = 0; j < message.optionDependency.length; ++j)
+                            object.optionDependency[j] = message.optionDependency[j];
+                    }
                     return object;
                 };
     
@@ -10785,6 +11945,7 @@
                  * @property {google.protobuf.IMessageOptions|null} [options] DescriptorProto options
                  * @property {Array.<google.protobuf.DescriptorProto.IReservedRange>|null} [reservedRange] DescriptorProto reservedRange
                  * @property {Array.<string>|null} [reservedName] DescriptorProto reservedName
+                 * @property {google.protobuf.SymbolVisibility|null} [visibility] DescriptorProto visibility
                  */
     
                 /**
@@ -10806,7 +11967,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -10890,6 +12051,14 @@
                  */
                 DescriptorProto.prototype.reservedName = $util.emptyArray;
     
+                /**
+                 * DescriptorProto visibility.
+                 * @member {google.protobuf.SymbolVisibility} visibility
+                 * @memberof google.protobuf.DescriptorProto
+                 * @instance
+                 */
+                DescriptorProto.prototype.visibility = 0;
+    
                 /**
                  * Creates a new DescriptorProto instance using the specified properties.
                  * @function create
@@ -10942,6 +12111,8 @@
                     if (message.reservedName != null && message.reservedName.length)
                         for (var i = 0; i < message.reservedName.length; ++i)
                             writer.uint32(/* id 10, wireType 2 =*/82).string(message.reservedName[i]);
+                    if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility"))
+                        writer.uint32(/* id 11, wireType 0 =*/88).int32(message.visibility);
                     return writer;
                 };
     
@@ -10969,9 +12140,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DescriptorProto.decode = function decode(reader, length, error) {
+                DescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -10985,47 +12160,47 @@
                         case 2: {
                                 if (!(message.field && message.field.length))
                                     message.field = [];
-                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.field.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 6: {
                                 if (!(message.extension && message.extension.length))
                                     message.extension = [];
-                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32()));
+                                message.extension.push($root.google.protobuf.FieldDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
                                 if (!(message.nestedType && message.nestedType.length))
                                     message.nestedType = [];
-                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32()));
+                                message.nestedType.push($root.google.protobuf.DescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
                                 if (!(message.enumType && message.enumType.length))
                                     message.enumType = [];
-                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32()));
+                                message.enumType.push($root.google.protobuf.EnumDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
                                 if (!(message.extensionRange && message.extensionRange.length))
                                     message.extensionRange = [];
-                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32()));
+                                message.extensionRange.push($root.google.protobuf.DescriptorProto.ExtensionRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 8: {
                                 if (!(message.oneofDecl && message.oneofDecl.length))
                                     message.oneofDecl = [];
-                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32()));
+                                message.oneofDecl.push($root.google.protobuf.OneofDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 7: {
-                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MessageOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 9: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.DescriptorProto.ReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 10: {
@@ -11034,8 +12209,12 @@
                                 message.reservedName.push(reader.string());
                                 break;
                             }
+                        case 11: {
+                                message.visibility = reader.int32();
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -11066,9 +12245,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DescriptorProto.verify = function verify(message) {
+                DescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -11076,7 +12259,7 @@
                         if (!Array.isArray(message.field))
                             return "field: array expected";
                         for (var i = 0; i < message.field.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.field[i], long + 1);
                             if (error)
                                 return "field." + error;
                         }
@@ -11085,7 +12268,7 @@
                         if (!Array.isArray(message.extension))
                             return "extension: array expected";
                         for (var i = 0; i < message.extension.length; ++i) {
-                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i]);
+                            var error = $root.google.protobuf.FieldDescriptorProto.verify(message.extension[i], long + 1);
                             if (error)
                                 return "extension." + error;
                         }
@@ -11094,7 +12277,7 @@
                         if (!Array.isArray(message.nestedType))
                             return "nestedType: array expected";
                         for (var i = 0; i < message.nestedType.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i]);
+                            var error = $root.google.protobuf.DescriptorProto.verify(message.nestedType[i], long + 1);
                             if (error)
                                 return "nestedType." + error;
                         }
@@ -11103,7 +12286,7 @@
                         if (!Array.isArray(message.enumType))
                             return "enumType: array expected";
                         for (var i = 0; i < message.enumType.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.verify(message.enumType[i], long + 1);
                             if (error)
                                 return "enumType." + error;
                         }
@@ -11112,7 +12295,7 @@
                         if (!Array.isArray(message.extensionRange))
                             return "extensionRange: array expected";
                         for (var i = 0; i < message.extensionRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ExtensionRange.verify(message.extensionRange[i], long + 1);
                             if (error)
                                 return "extensionRange." + error;
                         }
@@ -11121,13 +12304,13 @@
                         if (!Array.isArray(message.oneofDecl))
                             return "oneofDecl: array expected";
                         for (var i = 0; i < message.oneofDecl.length; ++i) {
-                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i]);
+                            var error = $root.google.protobuf.OneofDescriptorProto.verify(message.oneofDecl[i], long + 1);
                             if (error)
                                 return "oneofDecl." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MessageOptions.verify(message.options);
+                        var error = $root.google.protobuf.MessageOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -11135,7 +12318,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.DescriptorProto.ReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -11147,6 +12330,15 @@
                             if (!$util.isString(message.reservedName[i]))
                                 return "reservedName: string[] expected";
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        switch (message.visibility) {
+                        default:
+                            return "visibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
                     return null;
                 };
     
@@ -11158,9 +12350,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.DescriptorProto} DescriptorProto
                  */
-                DescriptorProto.fromObject = function fromObject(object) {
+                DescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.DescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.DescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -11171,7 +12367,7 @@
                         for (var i = 0; i < object.field.length; ++i) {
                             if (typeof object.field[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.field: object expected");
-                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i]);
+                            message.field[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.field[i], long + 1);
                         }
                     }
                     if (object.extension) {
@@ -11181,7 +12377,7 @@
                         for (var i = 0; i < object.extension.length; ++i) {
                             if (typeof object.extension[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extension: object expected");
-                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i]);
+                            message.extension[i] = $root.google.protobuf.FieldDescriptorProto.fromObject(object.extension[i], long + 1);
                         }
                     }
                     if (object.nestedType) {
@@ -11191,7 +12387,7 @@
                         for (var i = 0; i < object.nestedType.length; ++i) {
                             if (typeof object.nestedType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.nestedType: object expected");
-                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i]);
+                            message.nestedType[i] = $root.google.protobuf.DescriptorProto.fromObject(object.nestedType[i], long + 1);
                         }
                     }
                     if (object.enumType) {
@@ -11201,7 +12397,7 @@
                         for (var i = 0; i < object.enumType.length; ++i) {
                             if (typeof object.enumType[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.enumType: object expected");
-                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i]);
+                            message.enumType[i] = $root.google.protobuf.EnumDescriptorProto.fromObject(object.enumType[i], long + 1);
                         }
                     }
                     if (object.extensionRange) {
@@ -11211,7 +12407,7 @@
                         for (var i = 0; i < object.extensionRange.length; ++i) {
                             if (typeof object.extensionRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.extensionRange: object expected");
-                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i]);
+                            message.extensionRange[i] = $root.google.protobuf.DescriptorProto.ExtensionRange.fromObject(object.extensionRange[i], long + 1);
                         }
                     }
                     if (object.oneofDecl) {
@@ -11221,13 +12417,13 @@
                         for (var i = 0; i < object.oneofDecl.length; ++i) {
                             if (typeof object.oneofDecl[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.oneofDecl: object expected");
-                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i]);
+                            message.oneofDecl[i] = $root.google.protobuf.OneofDescriptorProto.fromObject(object.oneofDecl[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.DescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MessageOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -11236,7 +12432,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.DescriptorProto.ReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -11246,6 +12442,26 @@
                         for (var i = 0; i < object.reservedName.length; ++i)
                             message.reservedName[i] = String(object.reservedName[i]);
                     }
+                    switch (object.visibility) {
+                    default:
+                        if (typeof object.visibility === "number") {
+                            message.visibility = object.visibility;
+                            break;
+                        }
+                        break;
+                    case "VISIBILITY_UNSET":
+                    case 0:
+                        message.visibility = 0;
+                        break;
+                    case "VISIBILITY_LOCAL":
+                    case 1:
+                        message.visibility = 1;
+                        break;
+                    case "VISIBILITY_EXPORT":
+                    case 2:
+                        message.visibility = 2;
+                        break;
+                    }
                     return message;
                 };
     
@@ -11275,6 +12491,7 @@
                     if (options.defaults) {
                         object.name = "";
                         object.options = null;
+                        object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0;
                     }
                     if (message.name != null && message.hasOwnProperty("name"))
                         object.name = message.name;
@@ -11320,6 +12537,8 @@
                         for (var j = 0; j < message.reservedName.length; ++j)
                             object.reservedName[j] = message.reservedName[j];
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility;
                     return object;
                 };
     
@@ -11371,7 +12590,7 @@
                     function ExtensionRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -11456,9 +12675,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ExtensionRange.decode = function decode(reader, length, error) {
+                    ExtensionRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -11474,11 +12697,11 @@
                                     break;
                                 }
                             case 3: {
-                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32());
+                                    message.options = $root.google.protobuf.ExtensionRangeOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -11509,9 +12732,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ExtensionRange.verify = function verify(message) {
+                    ExtensionRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -11519,7 +12746,7 @@
                             if (!$util.isInteger(message.end))
                                 return "end: integer expected";
                         if (message.options != null && message.hasOwnProperty("options")) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.verify(message.options, long + 1);
                             if (error)
                                 return "options." + error;
                         }
@@ -11534,9 +12761,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ExtensionRange} ExtensionRange
                      */
-                    ExtensionRange.fromObject = function fromObject(object) {
+                    ExtensionRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ExtensionRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ExtensionRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -11545,7 +12776,7 @@
                         if (object.options != null) {
                             if (typeof object.options !== "object")
                                 throw TypeError(".google.protobuf.DescriptorProto.ExtensionRange.options: object expected");
-                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options);
+                            message.options = $root.google.protobuf.ExtensionRangeOptions.fromObject(object.options, long + 1);
                         }
                         return message;
                     };
@@ -11627,7 +12858,7 @@
                     function ReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -11702,9 +12933,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    ReservedRange.decode = function decode(reader, length, error) {
+                    ReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -11720,7 +12955,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -11751,9 +12986,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    ReservedRange.verify = function verify(message) {
+                    ReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -11771,9 +13010,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.DescriptorProto.ReservedRange} ReservedRange
                      */
-                    ReservedRange.fromObject = function fromObject(object) {
+                    ReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.DescriptorProto.ReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.DescriptorProto.ReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -11863,7 +13106,7 @@
                     this.declaration = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -11960,9 +13203,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ExtensionRangeOptions.decode = function decode(reader, length, error) {
+                ExtensionRangeOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -11972,17 +13219,17 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
                                 if (!(message.declaration && message.declaration.length))
                                     message.declaration = [];
-                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32()));
+                                message.declaration.push($root.google.protobuf.ExtensionRangeOptions.Declaration.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -11990,7 +13237,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -12021,14 +13268,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ExtensionRangeOptions.verify = function verify(message) {
+                ExtensionRangeOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -12037,13 +13288,13 @@
                         if (!Array.isArray(message.declaration))
                             return "declaration: array expected";
                         for (var i = 0; i < message.declaration.length; ++i) {
-                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i]);
+                            var error = $root.google.protobuf.ExtensionRangeOptions.Declaration.verify(message.declaration[i], long + 1);
                             if (error)
                                 return "declaration." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -12066,9 +13317,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ExtensionRangeOptions} ExtensionRangeOptions
                  */
-                ExtensionRangeOptions.fromObject = function fromObject(object) {
+                ExtensionRangeOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ExtensionRangeOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ExtensionRangeOptions();
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -12077,7 +13332,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object.declaration) {
@@ -12087,13 +13342,13 @@
                         for (var i = 0; i < object.declaration.length; ++i) {
                             if (typeof object.declaration[i] !== "object")
                                 throw TypeError(".google.protobuf.ExtensionRangeOptions.declaration: object expected");
-                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i]);
+                            message.declaration[i] = $root.google.protobuf.ExtensionRangeOptions.Declaration.fromObject(object.declaration[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ExtensionRangeOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     switch (object.verification) {
                     case "DECLARATION":
@@ -12202,7 +13457,7 @@
                     function Declaration(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -12307,9 +13562,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Declaration.decode = function decode(reader, length, error) {
+                    Declaration.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -12337,7 +13596,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -12368,9 +13627,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Declaration.verify = function verify(message) {
+                    Declaration.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.number != null && message.hasOwnProperty("number"))
                             if (!$util.isInteger(message.number))
                                 return "number: integer expected";
@@ -12397,9 +13660,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.ExtensionRangeOptions.Declaration} Declaration
                      */
-                    Declaration.fromObject = function fromObject(object) {
+                    Declaration.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.ExtensionRangeOptions.Declaration)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.ExtensionRangeOptions.Declaration();
                         if (object.number != null)
                             message.number = object.number | 0;
@@ -12523,7 +13790,7 @@
                 function FieldDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -12688,9 +13955,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldDescriptorProto.decode = function decode(reader, length, error) {
+                FieldDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -12734,7 +14005,7 @@
                                 break;
                             }
                         case 8: {
-                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.FieldOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 17: {
@@ -12742,7 +14013,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -12773,9 +14044,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldDescriptorProto.verify = function verify(message) {
+                FieldDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -12831,7 +14106,7 @@
                         if (!$util.isString(message.jsonName))
                             return "jsonName: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.FieldOptions.verify(message.options);
+                        var error = $root.google.protobuf.FieldOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -12849,9 +14124,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldDescriptorProto} FieldDescriptorProto
                  */
-                FieldDescriptorProto.fromObject = function fromObject(object) {
+                FieldDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -12970,7 +14249,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.FieldDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.FieldOptions.fromObject(object.options, long + 1);
                     }
                     if (object.proto3Optional != null)
                         message.proto3Optional = Boolean(object.proto3Optional);
@@ -13140,7 +14419,7 @@
                 function OneofDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -13215,9 +14494,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofDescriptorProto.decode = function decode(reader, length, error) {
+                OneofDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -13229,11 +14512,11 @@
                                 break;
                             }
                         case 2: {
-                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.OneofOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -13264,14 +14547,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofDescriptorProto.verify = function verify(message) {
+                OneofDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.OneofOptions.verify(message.options);
+                        var error = $root.google.protobuf.OneofOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -13286,16 +14573,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofDescriptorProto} OneofDescriptorProto
                  */
-                OneofDescriptorProto.fromObject = function fromObject(object) {
+                OneofDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.OneofDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.OneofOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -13364,6 +14655,7 @@
                  * @property {google.protobuf.IEnumOptions|null} [options] EnumDescriptorProto options
                  * @property {Array.<google.protobuf.EnumDescriptorProto.IEnumReservedRange>|null} [reservedRange] EnumDescriptorProto reservedRange
                  * @property {Array.<string>|null} [reservedName] EnumDescriptorProto reservedName
+                 * @property {google.protobuf.SymbolVisibility|null} [visibility] EnumDescriptorProto visibility
                  */
     
                 /**
@@ -13380,7 +14672,7 @@
                     this.reservedName = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -13424,6 +14716,14 @@
                  */
                 EnumDescriptorProto.prototype.reservedName = $util.emptyArray;
     
+                /**
+                 * EnumDescriptorProto visibility.
+                 * @member {google.protobuf.SymbolVisibility} visibility
+                 * @memberof google.protobuf.EnumDescriptorProto
+                 * @instance
+                 */
+                EnumDescriptorProto.prototype.visibility = 0;
+    
                 /**
                  * Creates a new EnumDescriptorProto instance using the specified properties.
                  * @function create
@@ -13461,6 +14761,8 @@
                     if (message.reservedName != null && message.reservedName.length)
                         for (var i = 0; i < message.reservedName.length; ++i)
                             writer.uint32(/* id 5, wireType 2 =*/42).string(message.reservedName[i]);
+                    if (message.visibility != null && Object.hasOwnProperty.call(message, "visibility"))
+                        writer.uint32(/* id 6, wireType 0 =*/48).int32(message.visibility);
                     return writer;
                 };
     
@@ -13488,9 +14790,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumDescriptorProto.decode = function decode(reader, length, error) {
+                EnumDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -13504,17 +14810,17 @@
                         case 2: {
                                 if (!(message.value && message.value.length))
                                     message.value = [];
-                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32()));
+                                message.value.push($root.google.protobuf.EnumValueDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 4: {
                                 if (!(message.reservedRange && message.reservedRange.length))
                                     message.reservedRange = [];
-                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32()));
+                                message.reservedRange.push($root.google.protobuf.EnumDescriptorProto.EnumReservedRange.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 5: {
@@ -13523,8 +14829,12 @@
                                 message.reservedName.push(reader.string());
                                 break;
                             }
+                        case 6: {
+                                message.visibility = reader.int32();
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -13555,9 +14865,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumDescriptorProto.verify = function verify(message) {
+                EnumDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -13565,13 +14879,13 @@
                         if (!Array.isArray(message.value))
                             return "value: array expected";
                         for (var i = 0; i < message.value.length; ++i) {
-                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i]);
+                            var error = $root.google.protobuf.EnumValueDescriptorProto.verify(message.value[i], long + 1);
                             if (error)
                                 return "value." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -13579,7 +14893,7 @@
                         if (!Array.isArray(message.reservedRange))
                             return "reservedRange: array expected";
                         for (var i = 0; i < message.reservedRange.length; ++i) {
-                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i]);
+                            var error = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.verify(message.reservedRange[i], long + 1);
                             if (error)
                                 return "reservedRange." + error;
                         }
@@ -13591,6 +14905,15 @@
                             if (!$util.isString(message.reservedName[i]))
                                 return "reservedName: string[] expected";
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        switch (message.visibility) {
+                        default:
+                            return "visibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
                     return null;
                 };
     
@@ -13602,9 +14925,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumDescriptorProto} EnumDescriptorProto
                  */
-                EnumDescriptorProto.fromObject = function fromObject(object) {
+                EnumDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -13615,13 +14942,13 @@
                         for (var i = 0; i < object.value.length; ++i) {
                             if (typeof object.value[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.value: object expected");
-                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i]);
+                            message.value[i] = $root.google.protobuf.EnumValueDescriptorProto.fromObject(object.value[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumOptions.fromObject(object.options, long + 1);
                     }
                     if (object.reservedRange) {
                         if (!Array.isArray(object.reservedRange))
@@ -13630,7 +14957,7 @@
                         for (var i = 0; i < object.reservedRange.length; ++i) {
                             if (typeof object.reservedRange[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumDescriptorProto.reservedRange: object expected");
-                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i]);
+                            message.reservedRange[i] = $root.google.protobuf.EnumDescriptorProto.EnumReservedRange.fromObject(object.reservedRange[i], long + 1);
                         }
                     }
                     if (object.reservedName) {
@@ -13640,6 +14967,26 @@
                         for (var i = 0; i < object.reservedName.length; ++i)
                             message.reservedName[i] = String(object.reservedName[i]);
                     }
+                    switch (object.visibility) {
+                    default:
+                        if (typeof object.visibility === "number") {
+                            message.visibility = object.visibility;
+                            break;
+                        }
+                        break;
+                    case "VISIBILITY_UNSET":
+                    case 0:
+                        message.visibility = 0;
+                        break;
+                    case "VISIBILITY_LOCAL":
+                    case 1:
+                        message.visibility = 1;
+                        break;
+                    case "VISIBILITY_EXPORT":
+                    case 2:
+                        message.visibility = 2;
+                        break;
+                    }
                     return message;
                 };
     
@@ -13664,6 +15011,7 @@
                     if (options.defaults) {
                         object.name = "";
                         object.options = null;
+                        object.visibility = options.enums === String ? "VISIBILITY_UNSET" : 0;
                     }
                     if (message.name != null && message.hasOwnProperty("name"))
                         object.name = message.name;
@@ -13684,6 +15032,8 @@
                         for (var j = 0; j < message.reservedName.length; ++j)
                             object.reservedName[j] = message.reservedName[j];
                     }
+                    if (message.visibility != null && message.hasOwnProperty("visibility"))
+                        object.visibility = options.enums === String ? $root.google.protobuf.SymbolVisibility[message.visibility] === undefined ? message.visibility : $root.google.protobuf.SymbolVisibility[message.visibility] : message.visibility;
                     return object;
                 };
     
@@ -13734,7 +15084,7 @@
                     function EnumReservedRange(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -13809,9 +15159,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EnumReservedRange.decode = function decode(reader, length, error) {
+                    EnumReservedRange.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -13827,7 +15181,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -13858,9 +15212,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EnumReservedRange.verify = function verify(message) {
+                    EnumReservedRange.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.start != null && message.hasOwnProperty("start"))
                             if (!$util.isInteger(message.start))
                                 return "start: integer expected";
@@ -13878,9 +15236,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.EnumDescriptorProto.EnumReservedRange} EnumReservedRange
                      */
-                    EnumReservedRange.fromObject = function fromObject(object) {
+                    EnumReservedRange.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.EnumDescriptorProto.EnumReservedRange)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.EnumDescriptorProto.EnumReservedRange();
                         if (object.start != null)
                             message.start = object.start | 0;
@@ -13967,7 +15329,7 @@
                 function EnumValueDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14052,9 +15414,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueDescriptorProto.decode = function decode(reader, length, error) {
+                EnumValueDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14070,11 +15436,11 @@
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.EnumValueOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14105,9 +15471,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueDescriptorProto.verify = function verify(message) {
+                EnumValueDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -14115,7 +15485,7 @@
                         if (!$util.isInteger(message.number))
                             return "number: integer expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options);
+                        var error = $root.google.protobuf.EnumValueOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -14130,9 +15500,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueDescriptorProto} EnumValueDescriptorProto
                  */
-                EnumValueDescriptorProto.fromObject = function fromObject(object) {
+                EnumValueDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -14141,7 +15515,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.EnumValueDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.EnumValueOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -14225,7 +15599,7 @@
                     this.method = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14311,9 +15685,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceDescriptorProto.decode = function decode(reader, length, error) {
+                ServiceDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14327,15 +15705,15 @@
                         case 2: {
                                 if (!(message.method && message.method.length))
                                     message.method = [];
-                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32()));
+                                message.method.push($root.google.protobuf.MethodDescriptorProto.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
-                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.ServiceOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14366,9 +15744,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceDescriptorProto.verify = function verify(message) {
+                ServiceDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -14376,13 +15758,13 @@
                         if (!Array.isArray(message.method))
                             return "method: array expected";
                         for (var i = 0; i < message.method.length; ++i) {
-                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i]);
+                            var error = $root.google.protobuf.MethodDescriptorProto.verify(message.method[i], long + 1);
                             if (error)
                                 return "method." + error;
                         }
                     }
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.ServiceOptions.verify(message.options);
+                        var error = $root.google.protobuf.ServiceOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -14397,9 +15779,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceDescriptorProto} ServiceDescriptorProto
                  */
-                ServiceDescriptorProto.fromObject = function fromObject(object) {
+                ServiceDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -14410,13 +15796,13 @@
                         for (var i = 0; i < object.method.length; ++i) {
                             if (typeof object.method[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceDescriptorProto.method: object expected");
-                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i]);
+                            message.method[i] = $root.google.protobuf.MethodDescriptorProto.fromObject(object.method[i], long + 1);
                         }
                     }
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.ServiceDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.ServiceOptions.fromObject(object.options, long + 1);
                     }
                     return message;
                 };
@@ -14506,7 +15892,7 @@
                 function MethodDescriptorProto(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -14621,9 +16007,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodDescriptorProto.decode = function decode(reader, length, error) {
+                MethodDescriptorProto.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodDescriptorProto();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -14643,7 +16033,7 @@
                                 break;
                             }
                         case 4: {
-                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32());
+                                message.options = $root.google.protobuf.MethodOptions.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 5: {
@@ -14655,7 +16045,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -14686,9 +16076,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodDescriptorProto.verify = function verify(message) {
+                MethodDescriptorProto.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -14699,7 +16093,7 @@
                         if (!$util.isString(message.outputType))
                             return "outputType: string expected";
                     if (message.options != null && message.hasOwnProperty("options")) {
-                        var error = $root.google.protobuf.MethodOptions.verify(message.options);
+                        var error = $root.google.protobuf.MethodOptions.verify(message.options, long + 1);
                         if (error)
                             return "options." + error;
                     }
@@ -14720,9 +16114,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodDescriptorProto} MethodDescriptorProto
                  */
-                MethodDescriptorProto.fromObject = function fromObject(object) {
+                MethodDescriptorProto.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodDescriptorProto)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodDescriptorProto();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -14733,7 +16131,7 @@
                     if (object.options != null) {
                         if (typeof object.options !== "object")
                             throw TypeError(".google.protobuf.MethodDescriptorProto.options: object expected");
-                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options);
+                        message.options = $root.google.protobuf.MethodOptions.fromObject(object.options, long + 1);
                     }
                     if (object.clientStreaming != null)
                         message.clientStreaming = Boolean(object.clientStreaming);
@@ -14850,7 +16248,7 @@
                     this[".google.api.resourceDefinition"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -15127,9 +16525,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FileOptions.decode = function decode(reader, length, error) {
+                FileOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FileOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15213,23 +16615,23 @@
                                 break;
                             }
                         case 50: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
                                 if (!(message[".google.api.resourceDefinition"] && message[".google.api.resourceDefinition"].length))
                                     message[".google.api.resourceDefinition"] = [];
-                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32()));
+                                message[".google.api.resourceDefinition"].push($root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -15260,9 +16662,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FileOptions.verify = function verify(message) {
+                FileOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.javaPackage != null && message.hasOwnProperty("javaPackage"))
                         if (!$util.isString(message.javaPackage))
                             return "javaPackage: string expected";
@@ -15327,7 +16733,7 @@
                         if (!$util.isString(message.rubyPackage))
                             return "rubyPackage: string expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -15335,7 +16741,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -15344,7 +16750,7 @@
                         if (!Array.isArray(message[".google.api.resourceDefinition"]))
                             return ".google.api.resourceDefinition: array expected";
                         for (var i = 0; i < message[".google.api.resourceDefinition"].length; ++i) {
-                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i]);
+                            var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resourceDefinition"][i], long + 1);
                             if (error)
                                 return ".google.api.resourceDefinition." + error;
                         }
@@ -15360,9 +16766,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FileOptions} FileOptions
                  */
-                FileOptions.fromObject = function fromObject(object) {
+                FileOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FileOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FileOptions();
                     if (object.javaPackage != null)
                         message.javaPackage = String(object.javaPackage);
@@ -15423,7 +16833,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FileOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -15432,7 +16842,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resourceDefinition"]) {
@@ -15442,7 +16852,7 @@
                         for (var i = 0; i < object[".google.api.resourceDefinition"].length; ++i) {
                             if (typeof object[".google.api.resourceDefinition"][i] !== "object")
                                 throw TypeError(".google.protobuf.FileOptions..google.api.resourceDefinition: object expected");
-                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i]);
+                            message[".google.api.resourceDefinition"][i] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resourceDefinition"][i], long + 1);
                         }
                     }
                     return message;
@@ -15613,7 +17023,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -15749,9 +17159,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MessageOptions.decode = function decode(reader, length, error) {
+                MessageOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MessageOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -15779,21 +17193,21 @@
                                 break;
                             }
                         case 12: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1053: {
-                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32());
+                                message[".google.api.resource"] = $root.google.api.ResourceDescriptor.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -15824,9 +17238,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MessageOptions.verify = function verify(message) {
+                MessageOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.messageSetWireFormat != null && message.hasOwnProperty("messageSetWireFormat"))
                         if (typeof message.messageSetWireFormat !== "boolean")
                             return "messageSetWireFormat: boolean expected";
@@ -15843,7 +17261,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -15851,13 +17269,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.resource"] != null && message.hasOwnProperty(".google.api.resource")) {
-                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"]);
+                        var error = $root.google.api.ResourceDescriptor.verify(message[".google.api.resource"], long + 1);
                         if (error)
                             return ".google.api.resource." + error;
                     }
@@ -15872,9 +17290,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MessageOptions} MessageOptions
                  */
-                MessageOptions.fromObject = function fromObject(object) {
+                MessageOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MessageOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MessageOptions();
                     if (object.messageSetWireFormat != null)
                         message.messageSetWireFormat = Boolean(object.messageSetWireFormat);
@@ -15889,7 +17311,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MessageOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -15898,13 +17320,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MessageOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.resource"] != null) {
                         if (typeof object[".google.api.resource"] !== "object")
                             throw TypeError(".google.protobuf.MessageOptions..google.api.resource: object expected");
-                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"]);
+                        message[".google.api.resource"] = $root.google.api.ResourceDescriptor.fromObject(object[".google.api.resource"], long + 1);
                     }
                     return message;
                 };
@@ -16002,6 +17424,7 @@
                  * @property {Array.<google.protobuf.FieldOptions.OptionTargetType>|null} [targets] FieldOptions targets
                  * @property {Array.<google.protobuf.FieldOptions.IEditionDefault>|null} [editionDefaults] FieldOptions editionDefaults
                  * @property {google.protobuf.IFeatureSet|null} [features] FieldOptions features
+                 * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] FieldOptions featureSupport
                  * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] FieldOptions uninterpretedOption
                  * @property {Array.<google.api.FieldBehavior>|null} [".google.api.fieldBehavior"] FieldOptions .google.api.fieldBehavior
                  * @property {google.api.IResourceReference|null} [".google.api.resourceReference"] FieldOptions .google.api.resourceReference
@@ -16022,7 +17445,7 @@
                     this[".google.api.fieldBehavior"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -16122,6 +17545,14 @@
                  */
                 FieldOptions.prototype.features = null;
     
+                /**
+                 * FieldOptions featureSupport.
+                 * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport
+                 * @memberof google.protobuf.FieldOptions
+                 * @instance
+                 */
+                FieldOptions.prototype.featureSupport = null;
+    
                 /**
                  * FieldOptions uninterpretedOption.
                  * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
@@ -16196,6 +17627,8 @@
                             $root.google.protobuf.FieldOptions.EditionDefault.encode(message.editionDefaults[i], writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();
                     if (message.features != null && Object.hasOwnProperty.call(message, "features"))
                         $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();
+                    if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport"))
+                        $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();
                     if (message.uninterpretedOption != null && message.uninterpretedOption.length)
                         for (var i = 0; i < message.uninterpretedOption.length; ++i)
                             $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
@@ -16231,9 +17664,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FieldOptions.decode = function decode(reader, length, error) {
+                FieldOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -16290,17 +17727,21 @@
                         case 20: {
                                 if (!(message.editionDefaults && message.editionDefaults.length))
                                     message.editionDefaults = [];
-                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32()));
+                                message.editionDefaults.push($root.google.protobuf.FieldOptions.EditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 21: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
+                        case 22: {
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1052: {
@@ -16315,11 +17756,11 @@
                                 break;
                             }
                         case 1055: {
-                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32());
+                                message[".google.api.resourceReference"] = $root.google.api.ResourceReference.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -16350,9 +17791,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FieldOptions.verify = function verify(message) {
+                FieldOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
                         switch (message.ctype) {
                         default:
@@ -16422,21 +17867,26 @@
                         if (!Array.isArray(message.editionDefaults))
                             return "editionDefaults: array expected";
                         for (var i = 0; i < message.editionDefaults.length; ++i) {
-                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i]);
+                            var error = $root.google.protobuf.FieldOptions.EditionDefault.verify(message.editionDefaults[i], long + 1);
                             if (error)
                                 return "editionDefaults." + error;
                         }
                     }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
+                        if (error)
+                            return "featureSupport." + error;
+                    }
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -16461,7 +17911,7 @@
                             }
                     }
                     if (message[".google.api.resourceReference"] != null && message.hasOwnProperty(".google.api.resourceReference")) {
-                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"]);
+                        var error = $root.google.api.ResourceReference.verify(message[".google.api.resourceReference"], long + 1);
                         if (error)
                             return ".google.api.resourceReference." + error;
                     }
@@ -16476,9 +17926,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FieldOptions} FieldOptions
                  */
-                FieldOptions.fromObject = function fromObject(object) {
+                FieldOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FieldOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FieldOptions();
                     switch (object.ctype) {
                     default:
@@ -16612,13 +18066,18 @@
                         for (var i = 0; i < object.editionDefaults.length; ++i) {
                             if (typeof object.editionDefaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.editionDefaults: object expected");
-                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i]);
+                            message.editionDefaults[i] = $root.google.protobuf.FieldOptions.EditionDefault.fromObject(object.editionDefaults[i], long + 1);
                         }
                     }
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.FieldOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
+                    }
+                    if (object.featureSupport != null) {
+                        if (typeof object.featureSupport !== "object")
+                            throw TypeError(".google.protobuf.FieldOptions.featureSupport: object expected");
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -16627,7 +18086,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.FieldOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.fieldBehavior"]) {
@@ -16682,7 +18141,7 @@
                     if (object[".google.api.resourceReference"] != null) {
                         if (typeof object[".google.api.resourceReference"] !== "object")
                             throw TypeError(".google.protobuf.FieldOptions..google.api.resourceReference: object expected");
-                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"]);
+                        message[".google.api.resourceReference"] = $root.google.api.ResourceReference.fromObject(object[".google.api.resourceReference"], long + 1);
                     }
                     return message;
                 };
@@ -16717,6 +18176,7 @@
                         object.debugRedact = false;
                         object.retention = options.enums === String ? "RETENTION_UNKNOWN" : 0;
                         object.features = null;
+                        object.featureSupport = null;
                         object[".google.api.resourceReference"] = null;
                     }
                     if (message.ctype != null && message.hasOwnProperty("ctype"))
@@ -16749,6 +18209,8 @@
                     }
                     if (message.features != null && message.hasOwnProperty("features"))
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport"))
+                        object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
                         object.uninterpretedOption = [];
                         for (var j = 0; j < message.uninterpretedOption.length; ++j)
@@ -16889,7 +18351,7 @@
                     function EditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -16964,9 +18426,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    EditionDefault.decode = function decode(reader, length, error) {
+                    EditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -16982,7 +18448,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -17013,14 +18479,19 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    EditionDefault.verify = function verify(message) {
+                    EditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
                                 return "edition: enum value expected";
                             case 0:
+                            case 900:
                             case 998:
                             case 999:
                             case 1000:
@@ -17047,9 +18518,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FieldOptions.EditionDefault} EditionDefault
                      */
-                    EditionDefault.fromObject = function fromObject(object) {
+                    EditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FieldOptions.EditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FieldOptions.EditionDefault();
                         switch (object.edition) {
                         default:
@@ -17060,105 +18535,603 @@
                             break;
                         case "EDITION_UNKNOWN":
                         case 0:
-                            message.edition = 0;
+                            message.edition = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.edition = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.edition = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.edition = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.edition = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.edition = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.edition = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.edition = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.edition = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.edition = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.edition = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.edition = 2147483647;
+                            break;
+                        }
+                        if (object.value != null)
+                            message.value = String(object.value);
+                        return message;
+                    };
+    
+                    /**
+                     * Creates a plain object from an EditionDefault message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {google.protobuf.FieldOptions.EditionDefault} message EditionDefault
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    EditionDefault.toObject = function toObject(message, options) {
+                        if (!options)
+                            options = {};
+                        var object = {};
+                        if (options.defaults) {
+                            object.value = "";
+                            object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                        }
+                        if (message.value != null && message.hasOwnProperty("value"))
+                            object.value = message.value;
+                        if (message.edition != null && message.hasOwnProperty("edition"))
+                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        return object;
+                    };
+    
+                    /**
+                     * Converts this EditionDefault to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    EditionDefault.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for EditionDefault
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    EditionDefault.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FieldOptions.EditionDefault";
+                    };
+    
+                    return EditionDefault;
+                })();
+    
+                FieldOptions.FeatureSupport = (function() {
+    
+                    /**
+                     * Properties of a FeatureSupport.
+                     * @memberof google.protobuf.FieldOptions
+                     * @interface IFeatureSupport
+                     * @property {google.protobuf.Edition|null} [editionIntroduced] FeatureSupport editionIntroduced
+                     * @property {google.protobuf.Edition|null} [editionDeprecated] FeatureSupport editionDeprecated
+                     * @property {string|null} [deprecationWarning] FeatureSupport deprecationWarning
+                     * @property {google.protobuf.Edition|null} [editionRemoved] FeatureSupport editionRemoved
+                     */
+    
+                    /**
+                     * Constructs a new FeatureSupport.
+                     * @memberof google.protobuf.FieldOptions
+                     * @classdesc Represents a FeatureSupport.
+                     * @implements IFeatureSupport
+                     * @constructor
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set
+                     */
+                    function FeatureSupport(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * FeatureSupport editionIntroduced.
+                     * @member {google.protobuf.Edition} editionIntroduced
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionIntroduced = 0;
+    
+                    /**
+                     * FeatureSupport editionDeprecated.
+                     * @member {google.protobuf.Edition} editionDeprecated
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionDeprecated = 0;
+    
+                    /**
+                     * FeatureSupport deprecationWarning.
+                     * @member {string} deprecationWarning
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.deprecationWarning = "";
+    
+                    /**
+                     * FeatureSupport editionRemoved.
+                     * @member {google.protobuf.Edition} editionRemoved
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @instance
+                     */
+                    FeatureSupport.prototype.editionRemoved = 0;
+    
+                    /**
+                     * Creates a new FeatureSupport instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport=} [properties] Properties to set
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport instance
+                     */
+                    FeatureSupport.create = function create(properties) {
+                        return new FeatureSupport(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSupport message. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSupport.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        if (message.editionIntroduced != null && Object.hasOwnProperty.call(message, "editionIntroduced"))
+                            writer.uint32(/* id 1, wireType 0 =*/8).int32(message.editionIntroduced);
+                        if (message.editionDeprecated != null && Object.hasOwnProperty.call(message, "editionDeprecated"))
+                            writer.uint32(/* id 2, wireType 0 =*/16).int32(message.editionDeprecated);
+                        if (message.deprecationWarning != null && Object.hasOwnProperty.call(message, "deprecationWarning"))
+                            writer.uint32(/* id 3, wireType 2 =*/26).string(message.deprecationWarning);
+                        if (message.editionRemoved != null && Object.hasOwnProperty.call(message, "editionRemoved"))
+                            writer.uint32(/* id 4, wireType 0 =*/32).int32(message.editionRemoved);
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified FeatureSupport message, length delimited. Does not implicitly {@link google.protobuf.FieldOptions.FeatureSupport.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {google.protobuf.FieldOptions.IFeatureSupport} message FeatureSupport message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    FeatureSupport.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a FeatureSupport message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSupport.decode = function decode(reader, length, error, long) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FieldOptions.FeatureSupport();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            case 1: {
+                                    message.editionIntroduced = reader.int32();
+                                    break;
+                                }
+                            case 2: {
+                                    message.editionDeprecated = reader.int32();
+                                    break;
+                                }
+                            case 3: {
+                                    message.deprecationWarning = reader.string();
+                                    break;
+                                }
+                            case 4: {
+                                    message.editionRemoved = reader.int32();
+                                    break;
+                                }
+                            default:
+                                reader.skipType(tag & 7, long);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a FeatureSupport message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    FeatureSupport.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a FeatureSupport message.
+                     * @function verify
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    FeatureSupport.verify = function verify(message, long) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
+                        if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
+                            switch (message.editionIntroduced) {
+                            default:
+                                return "editionIntroduced: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated"))
+                            switch (message.editionDeprecated) {
+                            default:
+                                return "editionDeprecated: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning"))
+                            if (!$util.isString(message.deprecationWarning))
+                                return "deprecationWarning: string expected";
+                        if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved"))
+                            switch (message.editionRemoved) {
+                            default:
+                                return "editionRemoved: enum value expected";
+                            case 0:
+                            case 900:
+                            case 998:
+                            case 999:
+                            case 1000:
+                            case 1001:
+                            case 1:
+                            case 2:
+                            case 99997:
+                            case 99998:
+                            case 99999:
+                            case 2147483647:
+                                break;
+                            }
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a FeatureSupport message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.FieldOptions.FeatureSupport} FeatureSupport
+                     */
+                    FeatureSupport.fromObject = function fromObject(object, long) {
+                        if (object instanceof $root.google.protobuf.FieldOptions.FeatureSupport)
+                            return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var message = new $root.google.protobuf.FieldOptions.FeatureSupport();
+                        switch (object.editionIntroduced) {
+                        default:
+                            if (typeof object.editionIntroduced === "number") {
+                                message.editionIntroduced = object.editionIntroduced;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionIntroduced = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionIntroduced = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionIntroduced = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionIntroduced = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionIntroduced = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionIntroduced = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionIntroduced = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionIntroduced = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionIntroduced = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionIntroduced = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionIntroduced = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionIntroduced = 2147483647;
+                            break;
+                        }
+                        switch (object.editionDeprecated) {
+                        default:
+                            if (typeof object.editionDeprecated === "number") {
+                                message.editionDeprecated = object.editionDeprecated;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionDeprecated = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionDeprecated = 900;
+                            break;
+                        case "EDITION_PROTO2":
+                        case 998:
+                            message.editionDeprecated = 998;
+                            break;
+                        case "EDITION_PROTO3":
+                        case 999:
+                            message.editionDeprecated = 999;
+                            break;
+                        case "EDITION_2023":
+                        case 1000:
+                            message.editionDeprecated = 1000;
+                            break;
+                        case "EDITION_2024":
+                        case 1001:
+                            message.editionDeprecated = 1001;
+                            break;
+                        case "EDITION_1_TEST_ONLY":
+                        case 1:
+                            message.editionDeprecated = 1;
+                            break;
+                        case "EDITION_2_TEST_ONLY":
+                        case 2:
+                            message.editionDeprecated = 2;
+                            break;
+                        case "EDITION_99997_TEST_ONLY":
+                        case 99997:
+                            message.editionDeprecated = 99997;
+                            break;
+                        case "EDITION_99998_TEST_ONLY":
+                        case 99998:
+                            message.editionDeprecated = 99998;
+                            break;
+                        case "EDITION_99999_TEST_ONLY":
+                        case 99999:
+                            message.editionDeprecated = 99999;
+                            break;
+                        case "EDITION_MAX":
+                        case 2147483647:
+                            message.editionDeprecated = 2147483647;
+                            break;
+                        }
+                        if (object.deprecationWarning != null)
+                            message.deprecationWarning = String(object.deprecationWarning);
+                        switch (object.editionRemoved) {
+                        default:
+                            if (typeof object.editionRemoved === "number") {
+                                message.editionRemoved = object.editionRemoved;
+                                break;
+                            }
+                            break;
+                        case "EDITION_UNKNOWN":
+                        case 0:
+                            message.editionRemoved = 0;
+                            break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.editionRemoved = 900;
                             break;
                         case "EDITION_PROTO2":
                         case 998:
-                            message.edition = 998;
+                            message.editionRemoved = 998;
                             break;
                         case "EDITION_PROTO3":
                         case 999:
-                            message.edition = 999;
+                            message.editionRemoved = 999;
                             break;
                         case "EDITION_2023":
                         case 1000:
-                            message.edition = 1000;
+                            message.editionRemoved = 1000;
                             break;
                         case "EDITION_2024":
                         case 1001:
-                            message.edition = 1001;
+                            message.editionRemoved = 1001;
                             break;
                         case "EDITION_1_TEST_ONLY":
                         case 1:
-                            message.edition = 1;
+                            message.editionRemoved = 1;
                             break;
                         case "EDITION_2_TEST_ONLY":
                         case 2:
-                            message.edition = 2;
+                            message.editionRemoved = 2;
                             break;
                         case "EDITION_99997_TEST_ONLY":
                         case 99997:
-                            message.edition = 99997;
+                            message.editionRemoved = 99997;
                             break;
                         case "EDITION_99998_TEST_ONLY":
                         case 99998:
-                            message.edition = 99998;
+                            message.editionRemoved = 99998;
                             break;
                         case "EDITION_99999_TEST_ONLY":
                         case 99999:
-                            message.edition = 99999;
+                            message.editionRemoved = 99999;
                             break;
                         case "EDITION_MAX":
                         case 2147483647:
-                            message.edition = 2147483647;
+                            message.editionRemoved = 2147483647;
                             break;
                         }
-                        if (object.value != null)
-                            message.value = String(object.value);
                         return message;
                     };
     
                     /**
-                     * Creates a plain object from an EditionDefault message. Also converts values to other types if specified.
+                     * Creates a plain object from a FeatureSupport message. Also converts values to other types if specified.
                      * @function toObject
-                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
                      * @static
-                     * @param {google.protobuf.FieldOptions.EditionDefault} message EditionDefault
+                     * @param {google.protobuf.FieldOptions.FeatureSupport} message FeatureSupport
                      * @param {$protobuf.IConversionOptions} [options] Conversion options
                      * @returns {Object.<string,*>} Plain object
                      */
-                    EditionDefault.toObject = function toObject(message, options) {
+                    FeatureSupport.toObject = function toObject(message, options) {
                         if (!options)
                             options = {};
                         var object = {};
                         if (options.defaults) {
-                            object.value = "";
-                            object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.editionIntroduced = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.editionDeprecated = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.deprecationWarning = "";
+                            object.editionRemoved = options.enums === String ? "EDITION_UNKNOWN" : 0;
                         }
-                        if (message.value != null && message.hasOwnProperty("value"))
-                            object.value = message.value;
-                        if (message.edition != null && message.hasOwnProperty("edition"))
-                            object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        if (message.editionIntroduced != null && message.hasOwnProperty("editionIntroduced"))
+                            object.editionIntroduced = options.enums === String ? $root.google.protobuf.Edition[message.editionIntroduced] === undefined ? message.editionIntroduced : $root.google.protobuf.Edition[message.editionIntroduced] : message.editionIntroduced;
+                        if (message.editionDeprecated != null && message.hasOwnProperty("editionDeprecated"))
+                            object.editionDeprecated = options.enums === String ? $root.google.protobuf.Edition[message.editionDeprecated] === undefined ? message.editionDeprecated : $root.google.protobuf.Edition[message.editionDeprecated] : message.editionDeprecated;
+                        if (message.deprecationWarning != null && message.hasOwnProperty("deprecationWarning"))
+                            object.deprecationWarning = message.deprecationWarning;
+                        if (message.editionRemoved != null && message.hasOwnProperty("editionRemoved"))
+                            object.editionRemoved = options.enums === String ? $root.google.protobuf.Edition[message.editionRemoved] === undefined ? message.editionRemoved : $root.google.protobuf.Edition[message.editionRemoved] : message.editionRemoved;
                         return object;
                     };
     
                     /**
-                     * Converts this EditionDefault to JSON.
+                     * Converts this FeatureSupport to JSON.
                      * @function toJSON
-                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
                      * @instance
                      * @returns {Object.<string,*>} JSON object
                      */
-                    EditionDefault.prototype.toJSON = function toJSON() {
+                    FeatureSupport.prototype.toJSON = function toJSON() {
                         return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
                     };
     
                     /**
-                     * Gets the default type url for EditionDefault
+                     * Gets the default type url for FeatureSupport
                      * @function getTypeUrl
-                     * @memberof google.protobuf.FieldOptions.EditionDefault
+                     * @memberof google.protobuf.FieldOptions.FeatureSupport
                      * @static
                      * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                      * @returns {string} The default type url
                      */
-                    EditionDefault.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                    FeatureSupport.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
                         if (typeUrlPrefix === undefined) {
                             typeUrlPrefix = "type.googleapis.com";
                         }
-                        return typeUrlPrefix + "/google.protobuf.FieldOptions.EditionDefault";
+                        return typeUrlPrefix + "/google.protobuf.FieldOptions.FeatureSupport";
                     };
     
-                    return EditionDefault;
+                    return FeatureSupport;
                 })();
     
                 return FieldOptions;
@@ -17186,7 +19159,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17262,9 +19235,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OneofOptions.decode = function decode(reader, length, error) {
+                OneofOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.OneofOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17272,17 +19249,17 @@
                             break;
                         switch (tag >>> 3) {
                         case 1: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17313,11 +19290,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OneofOptions.verify = function verify(message) {
+                OneofOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -17325,7 +19306,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -17341,14 +19322,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.OneofOptions} OneofOptions
                  */
-                OneofOptions.fromObject = function fromObject(object) {
+                OneofOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.OneofOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.OneofOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.OneofOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -17357,7 +19342,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.OneofOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -17444,7 +19429,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17550,9 +19535,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumOptions.decode = function decode(reader, length, error) {
+                EnumOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17572,17 +19561,17 @@
                                 break;
                             }
                         case 7: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17613,9 +19602,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumOptions.verify = function verify(message) {
+                EnumOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.allowAlias != null && message.hasOwnProperty("allowAlias"))
                         if (typeof message.allowAlias !== "boolean")
                             return "allowAlias: boolean expected";
@@ -17626,7 +19619,7 @@
                         if (typeof message.deprecatedLegacyJsonFieldConflicts !== "boolean")
                             return "deprecatedLegacyJsonFieldConflicts: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -17634,7 +19627,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -17650,9 +19643,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumOptions} EnumOptions
                  */
-                EnumOptions.fromObject = function fromObject(object) {
+                EnumOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumOptions();
                     if (object.allowAlias != null)
                         message.allowAlias = Boolean(object.allowAlias);
@@ -17663,7 +19660,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -17672,7 +19669,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -17753,6 +19750,7 @@
                  * @property {boolean|null} [deprecated] EnumValueOptions deprecated
                  * @property {google.protobuf.IFeatureSet|null} [features] EnumValueOptions features
                  * @property {boolean|null} [debugRedact] EnumValueOptions debugRedact
+                 * @property {google.protobuf.FieldOptions.IFeatureSupport|null} [featureSupport] EnumValueOptions featureSupport
                  * @property {Array.<google.protobuf.IUninterpretedOption>|null} [uninterpretedOption] EnumValueOptions uninterpretedOption
                  */
     
@@ -17768,7 +19766,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -17796,6 +19794,14 @@
                  */
                 EnumValueOptions.prototype.debugRedact = false;
     
+                /**
+                 * EnumValueOptions featureSupport.
+                 * @member {google.protobuf.FieldOptions.IFeatureSupport|null|undefined} featureSupport
+                 * @memberof google.protobuf.EnumValueOptions
+                 * @instance
+                 */
+                EnumValueOptions.prototype.featureSupport = null;
+    
                 /**
                  * EnumValueOptions uninterpretedOption.
                  * @member {Array.<google.protobuf.IUninterpretedOption>} uninterpretedOption
@@ -17834,6 +19840,8 @@
                         $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                     if (message.debugRedact != null && Object.hasOwnProperty.call(message, "debugRedact"))
                         writer.uint32(/* id 3, wireType 0 =*/24).bool(message.debugRedact);
+                    if (message.featureSupport != null && Object.hasOwnProperty.call(message, "featureSupport"))
+                        $root.google.protobuf.FieldOptions.FeatureSupport.encode(message.featureSupport, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
                     if (message.uninterpretedOption != null && message.uninterpretedOption.length)
                         for (var i = 0; i < message.uninterpretedOption.length; ++i)
                             $root.google.protobuf.UninterpretedOption.encode(message.uninterpretedOption[i], writer.uint32(/* id 999, wireType 2 =*/7994).fork()).ldelim();
@@ -17864,9 +19872,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                EnumValueOptions.decode = function decode(reader, length, error) {
+                EnumValueOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.EnumValueOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -17878,21 +19890,25 @@
                                 break;
                             }
                         case 2: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
                                 message.debugRedact = reader.bool();
                                 break;
                             }
+                        case 4: {
+                                message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.decode(reader, reader.uint32(), undefined, long + 1);
+                                break;
+                            }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -17923,25 +19939,34 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                EnumValueOptions.verify = function verify(message) {
+                EnumValueOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         if (typeof message.debugRedact !== "boolean")
                             return "debugRedact: boolean expected";
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport")) {
+                        var error = $root.google.protobuf.FieldOptions.FeatureSupport.verify(message.featureSupport, long + 1);
+                        if (error)
+                            return "featureSupport." + error;
+                    }
                     if (message.uninterpretedOption != null && message.hasOwnProperty("uninterpretedOption")) {
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -17957,19 +19982,28 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.EnumValueOptions} EnumValueOptions
                  */
-                EnumValueOptions.fromObject = function fromObject(object) {
+                EnumValueOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.EnumValueOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.EnumValueOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.EnumValueOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.debugRedact != null)
                         message.debugRedact = Boolean(object.debugRedact);
+                    if (object.featureSupport != null) {
+                        if (typeof object.featureSupport !== "object")
+                            throw TypeError(".google.protobuf.EnumValueOptions.featureSupport: object expected");
+                        message.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.fromObject(object.featureSupport, long + 1);
+                    }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
                             throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: array expected");
@@ -17977,7 +20011,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.EnumValueOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     return message;
@@ -18002,6 +20036,7 @@
                         object.deprecated = false;
                         object.features = null;
                         object.debugRedact = false;
+                        object.featureSupport = null;
                     }
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         object.deprecated = message.deprecated;
@@ -18009,6 +20044,8 @@
                         object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                     if (message.debugRedact != null && message.hasOwnProperty("debugRedact"))
                         object.debugRedact = message.debugRedact;
+                    if (message.featureSupport != null && message.hasOwnProperty("featureSupport"))
+                        object.featureSupport = $root.google.protobuf.FieldOptions.FeatureSupport.toObject(message.featureSupport, options);
                     if (message.uninterpretedOption && message.uninterpretedOption.length) {
                         object.uninterpretedOption = [];
                         for (var j = 0; j < message.uninterpretedOption.length; ++j)
@@ -18072,7 +20109,7 @@
                     this.uninterpretedOption = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -18188,9 +20225,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ServiceOptions.decode = function decode(reader, length, error) {
+                ServiceOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.ServiceOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -18198,7 +20239,7 @@
                             break;
                         switch (tag >>> 3) {
                         case 34: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 33: {
@@ -18208,7 +20249,7 @@
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 1049: {
@@ -18224,7 +20265,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -18255,11 +20296,15 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ServiceOptions.verify = function verify(message) {
+                ServiceOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -18270,7 +20315,7 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
@@ -18295,14 +20340,18 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.ServiceOptions} ServiceOptions
                  */
-                ServiceOptions.fromObject = function fromObject(object) {
+                ServiceOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.ServiceOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.ServiceOptions();
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.ServiceOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -18313,7 +20362,7 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.ServiceOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.defaultHost"] != null)
@@ -18422,7 +20471,7 @@
                     this[".google.api.methodSignature"] = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -18549,9 +20598,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                MethodOptions.decode = function decode(reader, length, error) {
+                MethodOptions.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.MethodOptions();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -18567,17 +20620,17 @@
                                 break;
                             }
                         case 35: {
-                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                                message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 999: {
                                 if (!(message.uninterpretedOption && message.uninterpretedOption.length))
                                     message.uninterpretedOption = [];
-                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32()));
+                                message.uninterpretedOption.push($root.google.protobuf.UninterpretedOption.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 72295728: {
-                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32());
+                                message[".google.api.http"] = $root.google.api.HttpRule.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 1051: {
@@ -18587,11 +20640,11 @@
                                 break;
                             }
                         case 1049: {
-                                message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32());
+                                message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -18622,9 +20675,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                MethodOptions.verify = function verify(message) {
+                MethodOptions.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.deprecated != null && message.hasOwnProperty("deprecated"))
                         if (typeof message.deprecated !== "boolean")
                             return "deprecated: boolean expected";
@@ -18638,7 +20695,7 @@
                             break;
                         }
                     if (message.features != null && message.hasOwnProperty("features")) {
-                        var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        var error = $root.google.protobuf.FeatureSet.verify(message.features, long + 1);
                         if (error)
                             return "features." + error;
                     }
@@ -18646,13 +20703,13 @@
                         if (!Array.isArray(message.uninterpretedOption))
                             return "uninterpretedOption: array expected";
                         for (var i = 0; i < message.uninterpretedOption.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.verify(message.uninterpretedOption[i], long + 1);
                             if (error)
                                 return "uninterpretedOption." + error;
                         }
                     }
                     if (message[".google.api.http"] != null && message.hasOwnProperty(".google.api.http")) {
-                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"]);
+                        var error = $root.google.api.HttpRule.verify(message[".google.api.http"], long + 1);
                         if (error)
                             return ".google.api.http." + error;
                     }
@@ -18664,7 +20721,7 @@
                                 return ".google.api.methodSignature: string[] expected";
                     }
                     if (message[".google.longrunning.operationInfo"] != null && message.hasOwnProperty(".google.longrunning.operationInfo")) {
-                        var error = $root.google.longrunning.OperationInfo.verify(message[".google.longrunning.operationInfo"]);
+                        var error = $root.google.longrunning.OperationInfo.verify(message[".google.longrunning.operationInfo"], long + 1);
                         if (error)
                             return ".google.longrunning.operationInfo." + error;
                     }
@@ -18679,9 +20736,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.MethodOptions} MethodOptions
                  */
-                MethodOptions.fromObject = function fromObject(object) {
+                MethodOptions.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.MethodOptions)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.MethodOptions();
                     if (object.deprecated != null)
                         message.deprecated = Boolean(object.deprecated);
@@ -18708,7 +20769,7 @@
                     if (object.features != null) {
                         if (typeof object.features !== "object")
                             throw TypeError(".google.protobuf.MethodOptions.features: object expected");
-                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        message.features = $root.google.protobuf.FeatureSet.fromObject(object.features, long + 1);
                     }
                     if (object.uninterpretedOption) {
                         if (!Array.isArray(object.uninterpretedOption))
@@ -18717,13 +20778,13 @@
                         for (var i = 0; i < object.uninterpretedOption.length; ++i) {
                             if (typeof object.uninterpretedOption[i] !== "object")
                                 throw TypeError(".google.protobuf.MethodOptions.uninterpretedOption: object expected");
-                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i]);
+                            message.uninterpretedOption[i] = $root.google.protobuf.UninterpretedOption.fromObject(object.uninterpretedOption[i], long + 1);
                         }
                     }
                     if (object[".google.api.http"] != null) {
                         if (typeof object[".google.api.http"] !== "object")
                             throw TypeError(".google.protobuf.MethodOptions..google.api.http: object expected");
-                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"]);
+                        message[".google.api.http"] = $root.google.api.HttpRule.fromObject(object[".google.api.http"], long + 1);
                     }
                     if (object[".google.api.methodSignature"]) {
                         if (!Array.isArray(object[".google.api.methodSignature"]))
@@ -18735,7 +20796,7 @@
                     if (object[".google.longrunning.operationInfo"] != null) {
                         if (typeof object[".google.longrunning.operationInfo"] !== "object")
                             throw TypeError(".google.protobuf.MethodOptions..google.longrunning.operationInfo: object expected");
-                        message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.fromObject(object[".google.longrunning.operationInfo"]);
+                        message[".google.longrunning.operationInfo"] = $root.google.longrunning.OperationInfo.fromObject(object[".google.longrunning.operationInfo"], long + 1);
                     }
                     return message;
                 };
@@ -18859,7 +20920,7 @@
                     this.name = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -18985,9 +21046,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                UninterpretedOption.decode = function decode(reader, length, error) {
+                UninterpretedOption.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -18997,7 +21062,7 @@
                         case 2: {
                                 if (!(message.name && message.name.length))
                                     message.name = [];
-                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32()));
+                                message.name.push($root.google.protobuf.UninterpretedOption.NamePart.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 3: {
@@ -19025,7 +21090,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19056,14 +21121,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                UninterpretedOption.verify = function verify(message) {
+                UninterpretedOption.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name")) {
                         if (!Array.isArray(message.name))
                             return "name: array expected";
                         for (var i = 0; i < message.name.length; ++i) {
-                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i]);
+                            var error = $root.google.protobuf.UninterpretedOption.NamePart.verify(message.name[i], long + 1);
                             if (error)
                                 return "name." + error;
                         }
@@ -19097,9 +21166,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.UninterpretedOption} UninterpretedOption
                  */
-                UninterpretedOption.fromObject = function fromObject(object) {
+                UninterpretedOption.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.UninterpretedOption)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.UninterpretedOption();
                     if (object.name) {
                         if (!Array.isArray(object.name))
@@ -19108,7 +21181,7 @@
                         for (var i = 0; i < object.name.length; ++i) {
                             if (typeof object.name[i] !== "object")
                                 throw TypeError(".google.protobuf.UninterpretedOption.name: object expected");
-                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i]);
+                            message.name[i] = $root.google.protobuf.UninterpretedOption.NamePart.fromObject(object.name[i], long + 1);
                         }
                     }
                     if (object.identifierValue != null)
@@ -19253,7 +21326,7 @@
                     function NamePart(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -19326,9 +21399,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    NamePart.decode = function decode(reader, length, error) {
+                    NamePart.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -19344,7 +21421,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -19379,9 +21456,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    NamePart.verify = function verify(message) {
+                    NamePart.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (!$util.isString(message.namePart))
                             return "namePart: string expected";
                         if (typeof message.isExtension !== "boolean")
@@ -19397,9 +21478,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.UninterpretedOption.NamePart} NamePart
                      */
-                    NamePart.fromObject = function fromObject(object) {
+                    NamePart.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.UninterpretedOption.NamePart)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.UninterpretedOption.NamePart();
                         if (object.namePart != null)
                             message.namePart = String(object.namePart);
@@ -19476,6 +21561,8 @@
                  * @property {google.protobuf.FeatureSet.Utf8Validation|null} [utf8Validation] FeatureSet utf8Validation
                  * @property {google.protobuf.FeatureSet.MessageEncoding|null} [messageEncoding] FeatureSet messageEncoding
                  * @property {google.protobuf.FeatureSet.JsonFormat|null} [jsonFormat] FeatureSet jsonFormat
+                 * @property {google.protobuf.FeatureSet.EnforceNamingStyle|null} [enforceNamingStyle] FeatureSet enforceNamingStyle
+                 * @property {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility|null} [defaultSymbolVisibility] FeatureSet defaultSymbolVisibility
                  */
     
                 /**
@@ -19489,7 +21576,7 @@
                 function FeatureSet(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -19541,6 +21628,22 @@
                  */
                 FeatureSet.prototype.jsonFormat = 0;
     
+                /**
+                 * FeatureSet enforceNamingStyle.
+                 * @member {google.protobuf.FeatureSet.EnforceNamingStyle} enforceNamingStyle
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.enforceNamingStyle = 0;
+    
+                /**
+                 * FeatureSet defaultSymbolVisibility.
+                 * @member {google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility} defaultSymbolVisibility
+                 * @memberof google.protobuf.FeatureSet
+                 * @instance
+                 */
+                FeatureSet.prototype.defaultSymbolVisibility = 0;
+    
                 /**
                  * Creates a new FeatureSet instance using the specified properties.
                  * @function create
@@ -19577,6 +21680,10 @@
                         writer.uint32(/* id 5, wireType 0 =*/40).int32(message.messageEncoding);
                     if (message.jsonFormat != null && Object.hasOwnProperty.call(message, "jsonFormat"))
                         writer.uint32(/* id 6, wireType 0 =*/48).int32(message.jsonFormat);
+                    if (message.enforceNamingStyle != null && Object.hasOwnProperty.call(message, "enforceNamingStyle"))
+                        writer.uint32(/* id 7, wireType 0 =*/56).int32(message.enforceNamingStyle);
+                    if (message.defaultSymbolVisibility != null && Object.hasOwnProperty.call(message, "defaultSymbolVisibility"))
+                        writer.uint32(/* id 8, wireType 0 =*/64).int32(message.defaultSymbolVisibility);
                     return writer;
                 };
     
@@ -19604,9 +21711,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSet.decode = function decode(reader, length, error) {
+                FeatureSet.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -19637,8 +21748,16 @@
                                 message.jsonFormat = reader.int32();
                                 break;
                             }
+                        case 7: {
+                                message.enforceNamingStyle = reader.int32();
+                                break;
+                            }
+                        case 8: {
+                                message.defaultSymbolVisibility = reader.int32();
+                                break;
+                            }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -19669,9 +21788,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSet.verify = function verify(message) {
+                FeatureSet.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
                         switch (message.fieldPresence) {
                         default:
@@ -19727,6 +21850,26 @@
                         case 2:
                             break;
                         }
+                    if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle"))
+                        switch (message.enforceNamingStyle) {
+                        default:
+                            return "enforceNamingStyle: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                            break;
+                        }
+                    if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility"))
+                        switch (message.defaultSymbolVisibility) {
+                        default:
+                            return "defaultSymbolVisibility: enum value expected";
+                        case 0:
+                        case 1:
+                        case 2:
+                        case 3:
+                        case 4:
+                            break;
+                        }
                     return null;
                 };
     
@@ -19738,9 +21881,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSet} FeatureSet
                  */
-                FeatureSet.fromObject = function fromObject(object) {
+                FeatureSet.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSet)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSet();
                     switch (object.fieldPresence) {
                     default:
@@ -19866,6 +22013,54 @@
                         message.jsonFormat = 2;
                         break;
                     }
+                    switch (object.enforceNamingStyle) {
+                    default:
+                        if (typeof object.enforceNamingStyle === "number") {
+                            message.enforceNamingStyle = object.enforceNamingStyle;
+                            break;
+                        }
+                        break;
+                    case "ENFORCE_NAMING_STYLE_UNKNOWN":
+                    case 0:
+                        message.enforceNamingStyle = 0;
+                        break;
+                    case "STYLE2024":
+                    case 1:
+                        message.enforceNamingStyle = 1;
+                        break;
+                    case "STYLE_LEGACY":
+                    case 2:
+                        message.enforceNamingStyle = 2;
+                        break;
+                    }
+                    switch (object.defaultSymbolVisibility) {
+                    default:
+                        if (typeof object.defaultSymbolVisibility === "number") {
+                            message.defaultSymbolVisibility = object.defaultSymbolVisibility;
+                            break;
+                        }
+                        break;
+                    case "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN":
+                    case 0:
+                        message.defaultSymbolVisibility = 0;
+                        break;
+                    case "EXPORT_ALL":
+                    case 1:
+                        message.defaultSymbolVisibility = 1;
+                        break;
+                    case "EXPORT_TOP_LEVEL":
+                    case 2:
+                        message.defaultSymbolVisibility = 2;
+                        break;
+                    case "LOCAL_ALL":
+                    case 3:
+                        message.defaultSymbolVisibility = 3;
+                        break;
+                    case "STRICT":
+                    case 4:
+                        message.defaultSymbolVisibility = 4;
+                        break;
+                    }
                     return message;
                 };
     
@@ -19889,6 +22084,8 @@
                         object.utf8Validation = options.enums === String ? "UTF8_VALIDATION_UNKNOWN" : 0;
                         object.messageEncoding = options.enums === String ? "MESSAGE_ENCODING_UNKNOWN" : 0;
                         object.jsonFormat = options.enums === String ? "JSON_FORMAT_UNKNOWN" : 0;
+                        object.enforceNamingStyle = options.enums === String ? "ENFORCE_NAMING_STYLE_UNKNOWN" : 0;
+                        object.defaultSymbolVisibility = options.enums === String ? "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN" : 0;
                     }
                     if (message.fieldPresence != null && message.hasOwnProperty("fieldPresence"))
                         object.fieldPresence = options.enums === String ? $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] === undefined ? message.fieldPresence : $root.google.protobuf.FeatureSet.FieldPresence[message.fieldPresence] : message.fieldPresence;
@@ -19902,6 +22099,10 @@
                         object.messageEncoding = options.enums === String ? $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] === undefined ? message.messageEncoding : $root.google.protobuf.FeatureSet.MessageEncoding[message.messageEncoding] : message.messageEncoding;
                     if (message.jsonFormat != null && message.hasOwnProperty("jsonFormat"))
                         object.jsonFormat = options.enums === String ? $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] === undefined ? message.jsonFormat : $root.google.protobuf.FeatureSet.JsonFormat[message.jsonFormat] : message.jsonFormat;
+                    if (message.enforceNamingStyle != null && message.hasOwnProperty("enforceNamingStyle"))
+                        object.enforceNamingStyle = options.enums === String ? $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] === undefined ? message.enforceNamingStyle : $root.google.protobuf.FeatureSet.EnforceNamingStyle[message.enforceNamingStyle] : message.enforceNamingStyle;
+                    if (message.defaultSymbolVisibility != null && message.hasOwnProperty("defaultSymbolVisibility"))
+                        object.defaultSymbolVisibility = options.enums === String ? $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] === undefined ? message.defaultSymbolVisibility : $root.google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility[message.defaultSymbolVisibility] : message.defaultSymbolVisibility;
                     return object;
                 };
     
@@ -20029,6 +22230,231 @@
                     return values;
                 })();
     
+                /**
+                 * EnforceNamingStyle enum.
+                 * @name google.protobuf.FeatureSet.EnforceNamingStyle
+                 * @enum {number}
+                 * @property {number} ENFORCE_NAMING_STYLE_UNKNOWN=0 ENFORCE_NAMING_STYLE_UNKNOWN value
+                 * @property {number} STYLE2024=1 STYLE2024 value
+                 * @property {number} STYLE_LEGACY=2 STYLE_LEGACY value
+                 */
+                FeatureSet.EnforceNamingStyle = (function() {
+                    var valuesById = {}, values = Object.create(valuesById);
+                    values[valuesById[0] = "ENFORCE_NAMING_STYLE_UNKNOWN"] = 0;
+                    values[valuesById[1] = "STYLE2024"] = 1;
+                    values[valuesById[2] = "STYLE_LEGACY"] = 2;
+                    return values;
+                })();
+    
+                FeatureSet.VisibilityFeature = (function() {
+    
+                    /**
+                     * Properties of a VisibilityFeature.
+                     * @memberof google.protobuf.FeatureSet
+                     * @interface IVisibilityFeature
+                     */
+    
+                    /**
+                     * Constructs a new VisibilityFeature.
+                     * @memberof google.protobuf.FeatureSet
+                     * @classdesc Represents a VisibilityFeature.
+                     * @implements IVisibilityFeature
+                     * @constructor
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set
+                     */
+                    function VisibilityFeature(properties) {
+                        if (properties)
+                            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
+                                    this[keys[i]] = properties[keys[i]];
+                    }
+    
+                    /**
+                     * Creates a new VisibilityFeature instance using the specified properties.
+                     * @function create
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature=} [properties] Properties to set
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature instance
+                     */
+                    VisibilityFeature.create = function create(properties) {
+                        return new VisibilityFeature(properties);
+                    };
+    
+                    /**
+                     * Encodes the specified VisibilityFeature message. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                     * @function encode
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    VisibilityFeature.encode = function encode(message, writer) {
+                        if (!writer)
+                            writer = $Writer.create();
+                        return writer;
+                    };
+    
+                    /**
+                     * Encodes the specified VisibilityFeature message, length delimited. Does not implicitly {@link google.protobuf.FeatureSet.VisibilityFeature.verify|verify} messages.
+                     * @function encodeDelimited
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.IVisibilityFeature} message VisibilityFeature message or plain object to encode
+                     * @param {$protobuf.Writer} [writer] Writer to encode to
+                     * @returns {$protobuf.Writer} Writer
+                     */
+                    VisibilityFeature.encodeDelimited = function encodeDelimited(message, writer) {
+                        return this.encode(message, writer).ldelim();
+                    };
+    
+                    /**
+                     * Decodes a VisibilityFeature message from the specified reader or buffer.
+                     * @function decode
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @param {number} [length] Message length if known beforehand
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    VisibilityFeature.decode = function decode(reader, length, error, long) {
+                        if (!(reader instanceof $Reader))
+                            reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSet.VisibilityFeature();
+                        while (reader.pos < end) {
+                            var tag = reader.uint32();
+                            if (tag === error)
+                                break;
+                            switch (tag >>> 3) {
+                            default:
+                                reader.skipType(tag & 7, long);
+                                break;
+                            }
+                        }
+                        return message;
+                    };
+    
+                    /**
+                     * Decodes a VisibilityFeature message from the specified reader or buffer, length delimited.
+                     * @function decodeDelimited
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     * @throws {Error} If the payload is not a reader or valid buffer
+                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
+                     */
+                    VisibilityFeature.decodeDelimited = function decodeDelimited(reader) {
+                        if (!(reader instanceof $Reader))
+                            reader = new $Reader(reader);
+                        return this.decode(reader, reader.uint32());
+                    };
+    
+                    /**
+                     * Verifies a VisibilityFeature message.
+                     * @function verify
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {Object.<string,*>} message Plain object to verify
+                     * @returns {string|null} `null` if valid, otherwise the reason why it is not
+                     */
+                    VisibilityFeature.verify = function verify(message, long) {
+                        if (typeof message !== "object" || message === null)
+                            return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
+                        return null;
+                    };
+    
+                    /**
+                     * Creates a VisibilityFeature message from a plain object. Also converts values to their respective internal types.
+                     * @function fromObject
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {Object.<string,*>} object Plain object
+                     * @returns {google.protobuf.FeatureSet.VisibilityFeature} VisibilityFeature
+                     */
+                    VisibilityFeature.fromObject = function fromObject(object, long) {
+                        if (object instanceof $root.google.protobuf.FeatureSet.VisibilityFeature)
+                            return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
+                        return new $root.google.protobuf.FeatureSet.VisibilityFeature();
+                    };
+    
+                    /**
+                     * Creates a plain object from a VisibilityFeature message. Also converts values to other types if specified.
+                     * @function toObject
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {google.protobuf.FeatureSet.VisibilityFeature} message VisibilityFeature
+                     * @param {$protobuf.IConversionOptions} [options] Conversion options
+                     * @returns {Object.<string,*>} Plain object
+                     */
+                    VisibilityFeature.toObject = function toObject() {
+                        return {};
+                    };
+    
+                    /**
+                     * Converts this VisibilityFeature to JSON.
+                     * @function toJSON
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @instance
+                     * @returns {Object.<string,*>} JSON object
+                     */
+                    VisibilityFeature.prototype.toJSON = function toJSON() {
+                        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
+                    };
+    
+                    /**
+                     * Gets the default type url for VisibilityFeature
+                     * @function getTypeUrl
+                     * @memberof google.protobuf.FeatureSet.VisibilityFeature
+                     * @static
+                     * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
+                     * @returns {string} The default type url
+                     */
+                    VisibilityFeature.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
+                        if (typeUrlPrefix === undefined) {
+                            typeUrlPrefix = "type.googleapis.com";
+                        }
+                        return typeUrlPrefix + "/google.protobuf.FeatureSet.VisibilityFeature";
+                    };
+    
+                    /**
+                     * DefaultSymbolVisibility enum.
+                     * @name google.protobuf.FeatureSet.VisibilityFeature.DefaultSymbolVisibility
+                     * @enum {number}
+                     * @property {number} DEFAULT_SYMBOL_VISIBILITY_UNKNOWN=0 DEFAULT_SYMBOL_VISIBILITY_UNKNOWN value
+                     * @property {number} EXPORT_ALL=1 EXPORT_ALL value
+                     * @property {number} EXPORT_TOP_LEVEL=2 EXPORT_TOP_LEVEL value
+                     * @property {number} LOCAL_ALL=3 LOCAL_ALL value
+                     * @property {number} STRICT=4 STRICT value
+                     */
+                    VisibilityFeature.DefaultSymbolVisibility = (function() {
+                        var valuesById = {}, values = Object.create(valuesById);
+                        values[valuesById[0] = "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN"] = 0;
+                        values[valuesById[1] = "EXPORT_ALL"] = 1;
+                        values[valuesById[2] = "EXPORT_TOP_LEVEL"] = 2;
+                        values[valuesById[3] = "LOCAL_ALL"] = 3;
+                        values[valuesById[4] = "STRICT"] = 4;
+                        return values;
+                    })();
+    
+                    return VisibilityFeature;
+                })();
+    
                 return FeatureSet;
             })();
     
@@ -20055,7 +22481,7 @@
                     this.defaults = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -20141,9 +22567,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                FeatureSetDefaults.decode = function decode(reader, length, error) {
+                FeatureSetDefaults.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -20153,7 +22583,7 @@
                         case 1: {
                                 if (!(message.defaults && message.defaults.length))
                                     message.defaults = [];
-                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32()));
+                                message.defaults.push($root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 4: {
@@ -20165,7 +22595,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -20196,14 +22626,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                FeatureSetDefaults.verify = function verify(message) {
+                FeatureSetDefaults.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.defaults != null && message.hasOwnProperty("defaults")) {
                         if (!Array.isArray(message.defaults))
                             return "defaults: array expected";
                         for (var i = 0; i < message.defaults.length; ++i) {
-                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i]);
+                            var error = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.verify(message.defaults[i], long + 1);
                             if (error)
                                 return "defaults." + error;
                         }
@@ -20213,6 +22647,7 @@
                         default:
                             return "minimumEdition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -20230,6 +22665,7 @@
                         default:
                             return "maximumEdition: enum value expected";
                         case 0:
+                        case 900:
                         case 998:
                         case 999:
                         case 1000:
@@ -20253,9 +22689,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.FeatureSetDefaults} FeatureSetDefaults
                  */
-                FeatureSetDefaults.fromObject = function fromObject(object) {
+                FeatureSetDefaults.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.FeatureSetDefaults)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.FeatureSetDefaults();
                     if (object.defaults) {
                         if (!Array.isArray(object.defaults))
@@ -20264,7 +22704,7 @@
                         for (var i = 0; i < object.defaults.length; ++i) {
                             if (typeof object.defaults[i] !== "object")
                                 throw TypeError(".google.protobuf.FeatureSetDefaults.defaults: object expected");
-                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i]);
+                            message.defaults[i] = $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fromObject(object.defaults[i], long + 1);
                         }
                     }
                     switch (object.minimumEdition) {
@@ -20278,6 +22718,10 @@
                     case 0:
                         message.minimumEdition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.minimumEdition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.minimumEdition = 998;
@@ -20330,6 +22774,10 @@
                     case 0:
                         message.maximumEdition = 0;
                         break;
+                    case "EDITION_LEGACY":
+                    case 900:
+                        message.maximumEdition = 900;
+                        break;
                     case "EDITION_PROTO2":
                     case 998:
                         message.maximumEdition = 998;
@@ -20438,7 +22886,8 @@
                      * @memberof google.protobuf.FeatureSetDefaults
                      * @interface IFeatureSetEditionDefault
                      * @property {google.protobuf.Edition|null} [edition] FeatureSetEditionDefault edition
-                     * @property {google.protobuf.IFeatureSet|null} [features] FeatureSetEditionDefault features
+                     * @property {google.protobuf.IFeatureSet|null} [overridableFeatures] FeatureSetEditionDefault overridableFeatures
+                     * @property {google.protobuf.IFeatureSet|null} [fixedFeatures] FeatureSetEditionDefault fixedFeatures
                      */
     
                     /**
@@ -20452,7 +22901,7 @@
                     function FeatureSetEditionDefault(properties) {
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -20465,12 +22914,20 @@
                     FeatureSetEditionDefault.prototype.edition = 0;
     
                     /**
-                     * FeatureSetEditionDefault features.
-                     * @member {google.protobuf.IFeatureSet|null|undefined} features
+                     * FeatureSetEditionDefault overridableFeatures.
+                     * @member {google.protobuf.IFeatureSet|null|undefined} overridableFeatures
+                     * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
+                     * @instance
+                     */
+                    FeatureSetEditionDefault.prototype.overridableFeatures = null;
+    
+                    /**
+                     * FeatureSetEditionDefault fixedFeatures.
+                     * @member {google.protobuf.IFeatureSet|null|undefined} fixedFeatures
                      * @memberof google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault
                      * @instance
                      */
-                    FeatureSetEditionDefault.prototype.features = null;
+                    FeatureSetEditionDefault.prototype.fixedFeatures = null;
     
                     /**
                      * Creates a new FeatureSetEditionDefault instance using the specified properties.
@@ -20496,10 +22953,12 @@
                     FeatureSetEditionDefault.encode = function encode(message, writer) {
                         if (!writer)
                             writer = $Writer.create();
-                        if (message.features != null && Object.hasOwnProperty.call(message, "features"))
-                            $root.google.protobuf.FeatureSet.encode(message.features, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
                         if (message.edition != null && Object.hasOwnProperty.call(message, "edition"))
                             writer.uint32(/* id 3, wireType 0 =*/24).int32(message.edition);
+                        if (message.overridableFeatures != null && Object.hasOwnProperty.call(message, "overridableFeatures"))
+                            $root.google.protobuf.FeatureSet.encode(message.overridableFeatures, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
+                        if (message.fixedFeatures != null && Object.hasOwnProperty.call(message, "fixedFeatures"))
+                            $root.google.protobuf.FeatureSet.encode(message.fixedFeatures, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
                         return writer;
                     };
     
@@ -20527,9 +22986,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    FeatureSetEditionDefault.decode = function decode(reader, length, error) {
+                    FeatureSetEditionDefault.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -20540,12 +23003,16 @@
                                     message.edition = reader.int32();
                                     break;
                                 }
-                            case 2: {
-                                    message.features = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32());
+                            case 4: {
+                                    message.overridableFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
+                                    break;
+                                }
+                            case 5: {
+                                    message.fixedFeatures = $root.google.protobuf.FeatureSet.decode(reader, reader.uint32(), undefined, long + 1);
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -20576,14 +23043,19 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    FeatureSetEditionDefault.verify = function verify(message) {
+                    FeatureSetEditionDefault.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             switch (message.edition) {
                             default:
                                 return "edition: enum value expected";
                             case 0:
+                            case 900:
                             case 998:
                             case 999:
                             case 1000:
@@ -20596,10 +23068,15 @@
                             case 2147483647:
                                 break;
                             }
-                        if (message.features != null && message.hasOwnProperty("features")) {
-                            var error = $root.google.protobuf.FeatureSet.verify(message.features);
+                        if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures")) {
+                            var error = $root.google.protobuf.FeatureSet.verify(message.overridableFeatures, long + 1);
+                            if (error)
+                                return "overridableFeatures." + error;
+                        }
+                        if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures")) {
+                            var error = $root.google.protobuf.FeatureSet.verify(message.fixedFeatures, long + 1);
                             if (error)
-                                return "features." + error;
+                                return "fixedFeatures." + error;
                         }
                         return null;
                     };
@@ -20612,9 +23089,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault} FeatureSetEditionDefault
                      */
-                    FeatureSetEditionDefault.fromObject = function fromObject(object) {
+                    FeatureSetEditionDefault.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault();
                         switch (object.edition) {
                         default:
@@ -20627,6 +23108,10 @@
                         case 0:
                             message.edition = 0;
                             break;
+                        case "EDITION_LEGACY":
+                        case 900:
+                            message.edition = 900;
+                            break;
                         case "EDITION_PROTO2":
                         case 998:
                             message.edition = 998;
@@ -20668,10 +23153,15 @@
                             message.edition = 2147483647;
                             break;
                         }
-                        if (object.features != null) {
-                            if (typeof object.features !== "object")
-                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.features: object expected");
-                            message.features = $root.google.protobuf.FeatureSet.fromObject(object.features);
+                        if (object.overridableFeatures != null) {
+                            if (typeof object.overridableFeatures !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.overridableFeatures: object expected");
+                            message.overridableFeatures = $root.google.protobuf.FeatureSet.fromObject(object.overridableFeatures, long + 1);
+                        }
+                        if (object.fixedFeatures != null) {
+                            if (typeof object.fixedFeatures !== "object")
+                                throw TypeError(".google.protobuf.FeatureSetDefaults.FeatureSetEditionDefault.fixedFeatures: object expected");
+                            message.fixedFeatures = $root.google.protobuf.FeatureSet.fromObject(object.fixedFeatures, long + 1);
                         }
                         return message;
                     };
@@ -20690,13 +23180,16 @@
                             options = {};
                         var object = {};
                         if (options.defaults) {
-                            object.features = null;
                             object.edition = options.enums === String ? "EDITION_UNKNOWN" : 0;
+                            object.overridableFeatures = null;
+                            object.fixedFeatures = null;
                         }
-                        if (message.features != null && message.hasOwnProperty("features"))
-                            object.features = $root.google.protobuf.FeatureSet.toObject(message.features, options);
                         if (message.edition != null && message.hasOwnProperty("edition"))
                             object.edition = options.enums === String ? $root.google.protobuf.Edition[message.edition] === undefined ? message.edition : $root.google.protobuf.Edition[message.edition] : message.edition;
+                        if (message.overridableFeatures != null && message.hasOwnProperty("overridableFeatures"))
+                            object.overridableFeatures = $root.google.protobuf.FeatureSet.toObject(message.overridableFeatures, options);
+                        if (message.fixedFeatures != null && message.hasOwnProperty("fixedFeatures"))
+                            object.fixedFeatures = $root.google.protobuf.FeatureSet.toObject(message.fixedFeatures, options);
                         return object;
                     };
     
@@ -20753,7 +23246,7 @@
                     this.location = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -20819,9 +23312,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                SourceCodeInfo.decode = function decode(reader, length, error) {
+                SourceCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -20831,11 +23328,11 @@
                         case 1: {
                                 if (!(message.location && message.location.length))
                                     message.location = [];
-                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32()));
+                                message.location.push($root.google.protobuf.SourceCodeInfo.Location.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -20866,14 +23363,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                SourceCodeInfo.verify = function verify(message) {
+                SourceCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.location != null && message.hasOwnProperty("location")) {
                         if (!Array.isArray(message.location))
                             return "location: array expected";
                         for (var i = 0; i < message.location.length; ++i) {
-                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i]);
+                            var error = $root.google.protobuf.SourceCodeInfo.Location.verify(message.location[i], long + 1);
                             if (error)
                                 return "location." + error;
                         }
@@ -20889,9 +23390,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.SourceCodeInfo} SourceCodeInfo
                  */
-                SourceCodeInfo.fromObject = function fromObject(object) {
+                SourceCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.SourceCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.SourceCodeInfo();
                     if (object.location) {
                         if (!Array.isArray(object.location))
@@ -20900,7 +23405,7 @@
                         for (var i = 0; i < object.location.length; ++i) {
                             if (typeof object.location[i] !== "object")
                                 throw TypeError(".google.protobuf.SourceCodeInfo.location: object expected");
-                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i]);
+                            message.location[i] = $root.google.protobuf.SourceCodeInfo.Location.fromObject(object.location[i], long + 1);
                         }
                     }
                     return message;
@@ -20982,7 +23487,7 @@
                         this.leadingDetachedComments = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -21096,9 +23601,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Location.decode = function decode(reader, length, error) {
+                    Location.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.SourceCodeInfo.Location();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -21142,7 +23651,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -21173,9 +23682,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Location.verify = function verify(message) {
+                    Location.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -21214,9 +23727,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.SourceCodeInfo.Location} Location
                      */
-                    Location.fromObject = function fromObject(object) {
+                    Location.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.SourceCodeInfo.Location)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.SourceCodeInfo.Location();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -21343,7 +23860,7 @@
                     this.annotation = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -21409,9 +23926,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GeneratedCodeInfo.decode = function decode(reader, length, error) {
+                GeneratedCodeInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -21421,11 +23942,11 @@
                         case 1: {
                                 if (!(message.annotation && message.annotation.length))
                                     message.annotation = [];
-                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32()));
+                                message.annotation.push($root.google.protobuf.GeneratedCodeInfo.Annotation.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -21456,14 +23977,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GeneratedCodeInfo.verify = function verify(message) {
+                GeneratedCodeInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.annotation != null && message.hasOwnProperty("annotation")) {
                         if (!Array.isArray(message.annotation))
                             return "annotation: array expected";
                         for (var i = 0; i < message.annotation.length; ++i) {
-                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i]);
+                            var error = $root.google.protobuf.GeneratedCodeInfo.Annotation.verify(message.annotation[i], long + 1);
                             if (error)
                                 return "annotation." + error;
                         }
@@ -21479,9 +24004,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.GeneratedCodeInfo} GeneratedCodeInfo
                  */
-                GeneratedCodeInfo.fromObject = function fromObject(object) {
+                GeneratedCodeInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.GeneratedCodeInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.GeneratedCodeInfo();
                     if (object.annotation) {
                         if (!Array.isArray(object.annotation))
@@ -21490,7 +24019,7 @@
                         for (var i = 0; i < object.annotation.length; ++i) {
                             if (typeof object.annotation[i] !== "object")
                                 throw TypeError(".google.protobuf.GeneratedCodeInfo.annotation: object expected");
-                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i]);
+                            message.annotation[i] = $root.google.protobuf.GeneratedCodeInfo.Annotation.fromObject(object.annotation[i], long + 1);
                         }
                     }
                     return message;
@@ -21570,7 +24099,7 @@
                         this.path = [];
                         if (properties)
                             for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                                if (properties[keys[i]] != null)
+                                if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                     this[keys[i]] = properties[keys[i]];
                     }
     
@@ -21679,9 +24208,13 @@
                      * @throws {Error} If the payload is not a reader or valid buffer
                      * @throws {$protobuf.util.ProtocolError} If required fields are missing
                      */
-                    Annotation.decode = function decode(reader, length, error) {
+                    Annotation.decode = function decode(reader, length, error, long) {
                         if (!(reader instanceof $Reader))
                             reader = $Reader.create(reader);
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $Reader.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         while (reader.pos < end) {
                             var tag = reader.uint32();
@@ -21716,7 +24249,7 @@
                                     break;
                                 }
                             default:
-                                reader.skipType(tag & 7);
+                                reader.skipType(tag & 7, long);
                                 break;
                             }
                         }
@@ -21747,9 +24280,13 @@
                      * @param {Object.<string,*>} message Plain object to verify
                      * @returns {string|null} `null` if valid, otherwise the reason why it is not
                      */
-                    Annotation.verify = function verify(message) {
+                    Annotation.verify = function verify(message, long) {
                         if (typeof message !== "object" || message === null)
                             return "object expected";
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            return "maximum nesting depth exceeded";
                         if (message.path != null && message.hasOwnProperty("path")) {
                             if (!Array.isArray(message.path))
                                 return "path: array expected";
@@ -21786,9 +24323,13 @@
                      * @param {Object.<string,*>} object Plain object
                      * @returns {google.protobuf.GeneratedCodeInfo.Annotation} Annotation
                      */
-                    Annotation.fromObject = function fromObject(object) {
+                    Annotation.fromObject = function fromObject(object, long) {
                         if (object instanceof $root.google.protobuf.GeneratedCodeInfo.Annotation)
                             return object;
+                        if (long === undefined)
+                            long = 0;
+                        if (long > $util.recursionLimit)
+                            throw Error("maximum nesting depth exceeded");
                         var message = new $root.google.protobuf.GeneratedCodeInfo.Annotation();
                         if (object.path) {
                             if (!Array.isArray(object.path))
@@ -21911,6 +24452,22 @@
                 return GeneratedCodeInfo;
             })();
     
+            /**
+             * SymbolVisibility enum.
+             * @name google.protobuf.SymbolVisibility
+             * @enum {number}
+             * @property {number} VISIBILITY_UNSET=0 VISIBILITY_UNSET value
+             * @property {number} VISIBILITY_LOCAL=1 VISIBILITY_LOCAL value
+             * @property {number} VISIBILITY_EXPORT=2 VISIBILITY_EXPORT value
+             */
+            protobuf.SymbolVisibility = (function() {
+                var valuesById = {}, values = Object.create(valuesById);
+                values[valuesById[0] = "VISIBILITY_UNSET"] = 0;
+                values[valuesById[1] = "VISIBILITY_LOCAL"] = 1;
+                values[valuesById[2] = "VISIBILITY_EXPORT"] = 2;
+                return values;
+            })();
+    
             protobuf.Duration = (function() {
     
                 /**
@@ -21932,7 +24489,7 @@
                 function Duration(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -22007,9 +24564,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Duration.decode = function decode(reader, length, error) {
+                Duration.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Duration();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -22025,7 +24586,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -22056,9 +24617,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Duration.verify = function verify(message) {
+                Duration.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -22076,9 +24641,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Duration} Duration
                  */
-                Duration.fromObject = function fromObject(object) {
+                Duration.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Duration)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Duration();
                     if (object.seconds != null)
                         if ($util.Long)
@@ -22175,7 +24744,7 @@
                 function Any(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -22250,9 +24819,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Any.decode = function decode(reader, length, error) {
+                Any.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Any();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -22268,7 +24841,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -22299,9 +24872,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Any.verify = function verify(message) {
+                Any.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.type_url != null && message.hasOwnProperty("type_url"))
                         if (!$util.isString(message.type_url))
                             return "type_url: string expected";
@@ -22319,9 +24896,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Any} Any
                  */
-                Any.fromObject = function fromObject(object) {
+                Any.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Any)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Any();
                     if (object.type_url != null)
                         message.type_url = String(object.type_url);
@@ -22411,7 +24992,7 @@
                 function Empty(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -22466,9 +25047,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Empty.decode = function decode(reader, length, error) {
+                Empty.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Empty();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -22476,7 +25061,7 @@
                             break;
                         switch (tag >>> 3) {
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -22507,9 +25092,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Empty.verify = function verify(message) {
+                Empty.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     return null;
                 };
     
@@ -22521,9 +25110,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Empty} Empty
                  */
-                Empty.fromObject = function fromObject(object) {
+                Empty.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Empty)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     return new $root.google.protobuf.Empty();
                 };
     
@@ -22590,7 +25183,7 @@
                 function Timestamp(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -22665,9 +25258,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Timestamp.decode = function decode(reader, length, error) {
+                Timestamp.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -22683,7 +25280,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -22714,9 +25311,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Timestamp.verify = function verify(message) {
+                Timestamp.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.seconds != null && message.hasOwnProperty("seconds"))
                         if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))
                             return "seconds: integer|Long expected";
@@ -22734,9 +25335,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.protobuf.Timestamp} Timestamp
                  */
-                Timestamp.fromObject = function fromObject(object) {
+                Timestamp.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.protobuf.Timestamp)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.protobuf.Timestamp();
                     if (object.seconds != null)
                         if ($util.Long)
@@ -23048,7 +25653,7 @@
                 function Operation(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23167,9 +25772,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Operation.decode = function decode(reader, length, error) {
+                Operation.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.Operation();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23181,7 +25790,7 @@
                                 break;
                             }
                         case 2: {
-                                message.metadata = $root.google.protobuf.Any.decode(reader, reader.uint32());
+                                message.metadata = $root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 3: {
@@ -23189,15 +25798,15 @@
                                 break;
                             }
                         case 4: {
-                                message.error = $root.google.rpc.Status.decode(reader, reader.uint32());
+                                message.error = $root.google.rpc.Status.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         case 5: {
-                                message.response = $root.google.protobuf.Any.decode(reader, reader.uint32());
+                                message.response = $root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23228,15 +25837,19 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Operation.verify = function verify(message) {
+                Operation.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     var properties = {};
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
                     if (message.metadata != null && message.hasOwnProperty("metadata")) {
-                        var error = $root.google.protobuf.Any.verify(message.metadata);
+                        var error = $root.google.protobuf.Any.verify(message.metadata, long + 1);
                         if (error)
                             return "metadata." + error;
                     }
@@ -23246,7 +25859,7 @@
                     if (message.error != null && message.hasOwnProperty("error")) {
                         properties.result = 1;
                         {
-                            var error = $root.google.rpc.Status.verify(message.error);
+                            var error = $root.google.rpc.Status.verify(message.error, long + 1);
                             if (error)
                                 return "error." + error;
                         }
@@ -23256,7 +25869,7 @@
                             return "result: multiple values";
                         properties.result = 1;
                         {
-                            var error = $root.google.protobuf.Any.verify(message.response);
+                            var error = $root.google.protobuf.Any.verify(message.response, long + 1);
                             if (error)
                                 return "response." + error;
                         }
@@ -23272,28 +25885,32 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.Operation} Operation
                  */
-                Operation.fromObject = function fromObject(object) {
+                Operation.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.Operation)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.Operation();
                     if (object.name != null)
                         message.name = String(object.name);
                     if (object.metadata != null) {
                         if (typeof object.metadata !== "object")
                             throw TypeError(".google.longrunning.Operation.metadata: object expected");
-                        message.metadata = $root.google.protobuf.Any.fromObject(object.metadata);
+                        message.metadata = $root.google.protobuf.Any.fromObject(object.metadata, long + 1);
                     }
                     if (object.done != null)
                         message.done = Boolean(object.done);
                     if (object.error != null) {
                         if (typeof object.error !== "object")
                             throw TypeError(".google.longrunning.Operation.error: object expected");
-                        message.error = $root.google.rpc.Status.fromObject(object.error);
+                        message.error = $root.google.rpc.Status.fromObject(object.error, long + 1);
                     }
                     if (object.response != null) {
                         if (typeof object.response !== "object")
                             throw TypeError(".google.longrunning.Operation.response: object expected");
-                        message.response = $root.google.protobuf.Any.fromObject(object.response);
+                        message.response = $root.google.protobuf.Any.fromObject(object.response, long + 1);
                     }
                     return message;
                 };
@@ -23384,7 +26001,7 @@
                 function GetOperationRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23449,9 +26066,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                GetOperationRequest.decode = function decode(reader, length, error) {
+                GetOperationRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.GetOperationRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23463,7 +26084,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23494,9 +26115,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                GetOperationRequest.verify = function verify(message) {
+                GetOperationRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -23511,9 +26136,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.GetOperationRequest} GetOperationRequest
                  */
-                GetOperationRequest.fromObject = function fromObject(object) {
+                GetOperationRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.GetOperationRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.GetOperationRequest();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -23592,7 +26221,7 @@
                 function ListOperationsRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23687,9 +26316,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ListOperationsRequest.decode = function decode(reader, length, error) {
+                ListOperationsRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.ListOperationsRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23713,7 +26346,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23744,9 +26377,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ListOperationsRequest.verify = function verify(message) {
+                ListOperationsRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -23770,9 +26407,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.ListOperationsRequest} ListOperationsRequest
                  */
-                ListOperationsRequest.fromObject = function fromObject(object) {
+                ListOperationsRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.ListOperationsRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.ListOperationsRequest();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -23866,7 +26507,7 @@
                     this.operations = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -23942,9 +26583,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                ListOperationsResponse.decode = function decode(reader, length, error) {
+                ListOperationsResponse.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.ListOperationsResponse();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -23954,7 +26599,7 @@
                         case 1: {
                                 if (!(message.operations && message.operations.length))
                                     message.operations = [];
-                                message.operations.push($root.google.longrunning.Operation.decode(reader, reader.uint32()));
+                                message.operations.push($root.google.longrunning.Operation.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         case 2: {
@@ -23962,7 +26607,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -23993,14 +26638,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                ListOperationsResponse.verify = function verify(message) {
+                ListOperationsResponse.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.operations != null && message.hasOwnProperty("operations")) {
                         if (!Array.isArray(message.operations))
                             return "operations: array expected";
                         for (var i = 0; i < message.operations.length; ++i) {
-                            var error = $root.google.longrunning.Operation.verify(message.operations[i]);
+                            var error = $root.google.longrunning.Operation.verify(message.operations[i], long + 1);
                             if (error)
                                 return "operations." + error;
                         }
@@ -24019,9 +26668,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.ListOperationsResponse} ListOperationsResponse
                  */
-                ListOperationsResponse.fromObject = function fromObject(object) {
+                ListOperationsResponse.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.ListOperationsResponse)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.ListOperationsResponse();
                     if (object.operations) {
                         if (!Array.isArray(object.operations))
@@ -24030,7 +26683,7 @@
                         for (var i = 0; i < object.operations.length; ++i) {
                             if (typeof object.operations[i] !== "object")
                                 throw TypeError(".google.longrunning.ListOperationsResponse.operations: object expected");
-                            message.operations[i] = $root.google.longrunning.Operation.fromObject(object.operations[i]);
+                            message.operations[i] = $root.google.longrunning.Operation.fromObject(object.operations[i], long + 1);
                         }
                     }
                     if (object.nextPageToken != null)
@@ -24114,7 +26767,7 @@
                 function CancelOperationRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -24179,9 +26832,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                CancelOperationRequest.decode = function decode(reader, length, error) {
+                CancelOperationRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.CancelOperationRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -24193,7 +26850,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -24224,9 +26881,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                CancelOperationRequest.verify = function verify(message) {
+                CancelOperationRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -24241,9 +26902,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.CancelOperationRequest} CancelOperationRequest
                  */
-                CancelOperationRequest.fromObject = function fromObject(object) {
+                CancelOperationRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.CancelOperationRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.CancelOperationRequest();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -24319,7 +26984,7 @@
                 function DeleteOperationRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -24384,9 +27049,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                DeleteOperationRequest.decode = function decode(reader, length, error) {
+                DeleteOperationRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.DeleteOperationRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -24398,7 +27067,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -24429,9 +27098,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                DeleteOperationRequest.verify = function verify(message) {
+                DeleteOperationRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
@@ -24446,9 +27119,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.DeleteOperationRequest} DeleteOperationRequest
                  */
-                DeleteOperationRequest.fromObject = function fromObject(object) {
+                DeleteOperationRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.DeleteOperationRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.DeleteOperationRequest();
                     if (object.name != null)
                         message.name = String(object.name);
@@ -24525,7 +27202,7 @@
                 function WaitOperationRequest(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -24600,9 +27277,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                WaitOperationRequest.decode = function decode(reader, length, error) {
+                WaitOperationRequest.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.WaitOperationRequest();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -24614,11 +27295,11 @@
                                 break;
                             }
                         case 2: {
-                                message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32());
+                                message.timeout = $root.google.protobuf.Duration.decode(reader, reader.uint32(), undefined, long + 1);
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -24649,14 +27330,18 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                WaitOperationRequest.verify = function verify(message) {
+                WaitOperationRequest.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.name != null && message.hasOwnProperty("name"))
                         if (!$util.isString(message.name))
                             return "name: string expected";
                     if (message.timeout != null && message.hasOwnProperty("timeout")) {
-                        var error = $root.google.protobuf.Duration.verify(message.timeout);
+                        var error = $root.google.protobuf.Duration.verify(message.timeout, long + 1);
                         if (error)
                             return "timeout." + error;
                     }
@@ -24671,16 +27356,20 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.WaitOperationRequest} WaitOperationRequest
                  */
-                WaitOperationRequest.fromObject = function fromObject(object) {
+                WaitOperationRequest.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.WaitOperationRequest)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.WaitOperationRequest();
                     if (object.name != null)
                         message.name = String(object.name);
                     if (object.timeout != null) {
                         if (typeof object.timeout !== "object")
                             throw TypeError(".google.longrunning.WaitOperationRequest.timeout: object expected");
-                        message.timeout = $root.google.protobuf.Duration.fromObject(object.timeout);
+                        message.timeout = $root.google.protobuf.Duration.fromObject(object.timeout, long + 1);
                     }
                     return message;
                 };
@@ -24759,7 +27448,7 @@
                 function OperationInfo(properties) {
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -24834,9 +27523,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                OperationInfo.decode = function decode(reader, length, error) {
+                OperationInfo.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.longrunning.OperationInfo();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -24852,7 +27545,7 @@
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -24883,9 +27576,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                OperationInfo.verify = function verify(message) {
+                OperationInfo.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.responseType != null && message.hasOwnProperty("responseType"))
                         if (!$util.isString(message.responseType))
                             return "responseType: string expected";
@@ -24903,9 +27600,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.longrunning.OperationInfo} OperationInfo
                  */
-                OperationInfo.fromObject = function fromObject(object) {
+                OperationInfo.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.longrunning.OperationInfo)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.longrunning.OperationInfo();
                     if (object.responseType != null)
                         message.responseType = String(object.responseType);
@@ -25002,7 +27703,7 @@
                     this.details = [];
                     if (properties)
                         for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
-                            if (properties[keys[i]] != null)
+                            if (properties[keys[i]] != null && keys[i] !== "__proto__")
                                 this[keys[i]] = properties[keys[i]];
                 }
     
@@ -25088,9 +27789,13 @@
                  * @throws {Error} If the payload is not a reader or valid buffer
                  * @throws {$protobuf.util.ProtocolError} If required fields are missing
                  */
-                Status.decode = function decode(reader, length, error) {
+                Status.decode = function decode(reader, length, error, long) {
                     if (!(reader instanceof $Reader))
                         reader = $Reader.create(reader);
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $Reader.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.rpc.Status();
                     while (reader.pos < end) {
                         var tag = reader.uint32();
@@ -25108,11 +27813,11 @@
                         case 3: {
                                 if (!(message.details && message.details.length))
                                     message.details = [];
-                                message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32()));
+                                message.details.push($root.google.protobuf.Any.decode(reader, reader.uint32(), undefined, long + 1));
                                 break;
                             }
                         default:
-                            reader.skipType(tag & 7);
+                            reader.skipType(tag & 7, long);
                             break;
                         }
                     }
@@ -25143,9 +27848,13 @@
                  * @param {Object.<string,*>} message Plain object to verify
                  * @returns {string|null} `null` if valid, otherwise the reason why it is not
                  */
-                Status.verify = function verify(message) {
+                Status.verify = function verify(message, long) {
                     if (typeof message !== "object" || message === null)
                         return "object expected";
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        return "maximum nesting depth exceeded";
                     if (message.code != null && message.hasOwnProperty("code"))
                         if (!$util.isInteger(message.code))
                             return "code: integer expected";
@@ -25156,7 +27865,7 @@
                         if (!Array.isArray(message.details))
                             return "details: array expected";
                         for (var i = 0; i < message.details.length; ++i) {
-                            var error = $root.google.protobuf.Any.verify(message.details[i]);
+                            var error = $root.google.protobuf.Any.verify(message.details[i], long + 1);
                             if (error)
                                 return "details." + error;
                         }
@@ -25172,9 +27881,13 @@
                  * @param {Object.<string,*>} object Plain object
                  * @returns {google.rpc.Status} Status
                  */
-                Status.fromObject = function fromObject(object) {
+                Status.fromObject = function fromObject(object, long) {
                     if (object instanceof $root.google.rpc.Status)
                         return object;
+                    if (long === undefined)
+                        long = 0;
+                    if (long > $util.recursionLimit)
+                        throw Error("maximum nesting depth exceeded");
                     var message = new $root.google.rpc.Status();
                     if (object.code != null)
                         message.code = object.code | 0;
@@ -25187,7 +27900,7 @@
                         for (var i = 0; i < object.details.length; ++i) {
                             if (typeof object.details[i] !== "object")
                                 throw TypeError(".google.rpc.Status.details: object expected");
-                            message.details[i] = $root.google.protobuf.Any.fromObject(object.details[i]);
+                            message.details[i] = $root.google.protobuf.Any.fromObject(object.details[i], long + 1);
                         }
                     }
                     return message;
diff --git a/packages/google-cloud-shell/protos/protos.json b/packages/google-cloud-shell/protos/protos.json
index 048e733b151c..cdc517c36b25 100644
--- a/packages/google-cloud-shell/protos/protos.json
+++ b/packages/google-cloud-shell/protos/protos.json
@@ -380,8 +380,7 @@
             "java_multiple_files": true,
             "java_outer_classname": "ResourceProto",
             "java_package": "com.google.api",
-            "objc_class_prefix": "GAPI",
-            "cc_enable_arenas": true
+            "objc_class_prefix": "GAPI"
           },
           "nested": {
             "http": {
@@ -505,6 +504,10 @@
                   "rule": "repeated",
                   "type": "ClientLibraryDestination",
                   "id": 2
+                },
+                "selectiveGapicGeneration": {
+                  "type": "SelectiveGapicGeneration",
+                  "id": 3
                 }
               }
             },
@@ -645,6 +648,28 @@
                 "common": {
                   "type": "CommonLanguageSettings",
                   "id": 1
+                },
+                "experimentalFeatures": {
+                  "type": "ExperimentalFeatures",
+                  "id": 2
+                }
+              },
+              "nested": {
+                "ExperimentalFeatures": {
+                  "fields": {
+                    "restAsyncIoEnabled": {
+                      "type": "bool",
+                      "id": 1
+                    },
+                    "protobufPythonicTypesEnabled": {
+                      "type": "bool",
+                      "id": 2
+                    },
+                    "unversionedPackageDisabled": {
+                      "type": "bool",
+                      "id": 3
+                    }
+                  }
                 }
               }
             },
@@ -702,6 +727,11 @@
                 "common": {
                   "type": "CommonLanguageSettings",
                   "id": 1
+                },
+                "renamedServices": {
+                  "keyType": "string",
+                  "type": "string",
+                  "id": 2
                 }
               }
             },
@@ -763,6 +793,19 @@
                 "PACKAGE_MANAGER": 20
               }
             },
+            "SelectiveGapicGeneration": {
+              "fields": {
+                "methods": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 1
+                },
+                "generateOmittedAsInternal": {
+                  "type": "bool",
+                  "id": 2
+                }
+              }
+            },
             "LaunchStage": {
               "values": {
                 "LAUNCH_STAGE_UNSPECIFIED": 0,
@@ -895,12 +938,19 @@
                   "type": "FileDescriptorProto",
                   "id": 1
                 }
-              }
+              },
+              "extensions": [
+                [
+                  536000000,
+                  536000000
+                ]
+              ]
             },
             "Edition": {
               "edition": "proto2",
               "values": {
                 "EDITION_UNKNOWN": 0,
+                "EDITION_LEGACY": 900,
                 "EDITION_PROTO2": 998,
                 "EDITION_PROTO3": 999,
                 "EDITION_2023": 1000,
@@ -939,6 +989,11 @@
                   "type": "int32",
                   "id": 11
                 },
+                "optionDependency": {
+                  "rule": "repeated",
+                  "type": "string",
+                  "id": 15
+                },
                 "messageType": {
                   "rule": "repeated",
                   "type": "DescriptorProto",
@@ -1027,6 +1082,10 @@
                   "rule": "repeated",
                   "type": "string",
                   "id": 10
+                },
+                "visibility": {
+                  "type": "SymbolVisibility",
+                  "id": 11
                 }
               },
               "nested": {
@@ -1252,6 +1311,10 @@
                   "rule": "repeated",
                   "type": "string",
                   "id": 5
+                },
+                "visibility": {
+                  "type": "SymbolVisibility",
+                  "id": 6
                 }
               },
               "nested": {
@@ -1302,7 +1365,14 @@
                   "type": "ServiceOptions",
                   "id": 3
                 }
-              }
+              },
+              "reserved": [
+                [
+                  4,
+                  4
+                ],
+                "stream"
+              ]
             },
             "MethodDescriptorProto": {
               "edition": "proto2",
@@ -1466,6 +1536,7 @@
                   42,
                   42
                 ],
+                "php_generic_services",
                 [
                   38,
                   38
@@ -1601,7 +1672,8 @@
                   "type": "bool",
                   "id": 10,
                   "options": {
-                    "default": false
+                    "default": false,
+                    "deprecated": true
                   }
                 },
                 "debugRedact": {
@@ -1629,6 +1701,10 @@
                   "type": "FeatureSet",
                   "id": 21
                 },
+                "featureSupport": {
+                  "type": "FeatureSupport",
+                  "id": 22
+                },
                 "uninterpretedOption": {
                   "rule": "repeated",
                   "type": "UninterpretedOption",
@@ -1698,6 +1774,26 @@
                       "id": 2
                     }
                   }
+                },
+                "FeatureSupport": {
+                  "fields": {
+                    "editionIntroduced": {
+                      "type": "Edition",
+                      "id": 1
+                    },
+                    "editionDeprecated": {
+                      "type": "Edition",
+                      "id": 2
+                    },
+                    "deprecationWarning": {
+                      "type": "string",
+                      "id": 3
+                    },
+                    "editionRemoved": {
+                      "type": "Edition",
+                      "id": 4
+                    }
+                  }
                 }
               }
             },
@@ -1786,6 +1882,10 @@
                     "default": false
                   }
                 },
+                "featureSupport": {
+                  "type": "FieldOptions.FeatureSupport",
+                  "id": 4
+                },
                 "uninterpretedOption": {
                   "rule": "repeated",
                   "type": "UninterpretedOption",
@@ -1928,6 +2028,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_2023",
                     "edition_defaults.value": "EXPLICIT"
                   }
@@ -1938,6 +2039,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "OPEN"
                   }
@@ -1948,6 +2050,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "PACKED"
                   }
@@ -1958,6 +2061,7 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "VERIFY"
                   }
@@ -1968,7 +2072,8 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
-                    "edition_defaults.edition": "EDITION_PROTO2",
+                    "feature_support.edition_introduced": "EDITION_2023",
+                    "edition_defaults.edition": "EDITION_LEGACY",
                     "edition_defaults.value": "LENGTH_PREFIXED"
                   }
                 },
@@ -1978,27 +2083,38 @@
                   "options": {
                     "retention": "RETENTION_RUNTIME",
                     "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2023",
                     "edition_defaults.edition": "EDITION_PROTO3",
                     "edition_defaults.value": "ALLOW"
                   }
+                },
+                "enforceNamingStyle": {
+                  "type": "EnforceNamingStyle",
+                  "id": 7,
+                  "options": {
+                    "retention": "RETENTION_SOURCE",
+                    "targets": "TARGET_TYPE_METHOD",
+                    "feature_support.edition_introduced": "EDITION_2024",
+                    "edition_defaults.edition": "EDITION_2024",
+                    "edition_defaults.value": "STYLE2024"
+                  }
+                },
+                "defaultSymbolVisibility": {
+                  "type": "VisibilityFeature.DefaultSymbolVisibility",
+                  "id": 8,
+                  "options": {
+                    "retention": "RETENTION_SOURCE",
+                    "targets": "TARGET_TYPE_FILE",
+                    "feature_support.edition_introduced": "EDITION_2024",
+                    "edition_defaults.edition": "EDITION_2024",
+                    "edition_defaults.value": "EXPORT_TOP_LEVEL"
+                  }
                 }
               },
               "extensions": [
                 [
                   1000,
-                  1000
-                ],
-                [
-                  1001,
-                  1001
-                ],
-                [
-                  1002,
-                  1002
-                ],
-                [
-                  9990,
-                  9990
+                  9994
                 ],
                 [
                   9995,
@@ -2043,7 +2159,13 @@
                     "UTF8_VALIDATION_UNKNOWN": 0,
                     "VERIFY": 2,
                     "NONE": 3
-                  }
+                  },
+                  "reserved": [
+                    [
+                      1,
+                      1
+                    ]
+                  ]
                 },
                 "MessageEncoding": {
                   "values": {
@@ -2058,6 +2180,33 @@
                     "ALLOW": 1,
                     "LEGACY_BEST_EFFORT": 2
                   }
+                },
+                "EnforceNamingStyle": {
+                  "values": {
+                    "ENFORCE_NAMING_STYLE_UNKNOWN": 0,
+                    "STYLE2024": 1,
+                    "STYLE_LEGACY": 2
+                  }
+                },
+                "VisibilityFeature": {
+                  "fields": {},
+                  "reserved": [
+                    [
+                      1,
+                      536870911
+                    ]
+                  ],
+                  "nested": {
+                    "DefaultSymbolVisibility": {
+                      "values": {
+                        "DEFAULT_SYMBOL_VISIBILITY_UNKNOWN": 0,
+                        "EXPORT_ALL": 1,
+                        "EXPORT_TOP_LEVEL": 2,
+                        "LOCAL_ALL": 3,
+                        "STRICT": 4
+                      }
+                    }
+                  }
                 }
               }
             },
@@ -2085,11 +2234,26 @@
                       "type": "Edition",
                       "id": 3
                     },
-                    "features": {
+                    "overridableFeatures": {
                       "type": "FeatureSet",
-                      "id": 2
+                      "id": 4
+                    },
+                    "fixedFeatures": {
+                      "type": "FeatureSet",
+                      "id": 5
                     }
-                  }
+                  },
+                  "reserved": [
+                    [
+                      1,
+                      1
+                    ],
+                    [
+                      2,
+                      2
+                    ],
+                    "features"
+                  ]
                 }
               }
             },
@@ -2102,6 +2266,12 @@
                   "id": 1
                 }
               },
+              "extensions": [
+                [
+                  536000000,
+                  536000000
+                ]
+              ],
               "nested": {
                 "Location": {
                   "fields": {
@@ -2187,6 +2357,14 @@
                 }
               }
             },
+            "SymbolVisibility": {
+              "edition": "proto2",
+              "values": {
+                "VISIBILITY_UNSET": 0,
+                "VISIBILITY_LOCAL": 1,
+                "VISIBILITY_EXPORT": 2
+              }
+            },
             "Duration": {
               "fields": {
                 "seconds": {
@@ -2236,6 +2414,7 @@
             "java_multiple_files": true,
             "java_outer_classname": "OperationsProto",
             "java_package": "com.google.longrunning",
+            "objc_class_prefix": "GLRUN",
             "php_namespace": "Google\\LongRunning"
           },
           "nested": {
diff --git a/packages/google-cloud-shell/src/v1/cloud_shell_service_client.ts b/packages/google-cloud-shell/src/v1/cloud_shell_service_client.ts
index 0752b1cc6bb8..e0b8d3951380 100644
--- a/packages/google-cloud-shell/src/v1/cloud_shell_service_client.ts
+++ b/packages/google-cloud-shell/src/v1/cloud_shell_service_client.ts
@@ -18,11 +18,18 @@
 
 /* global window */
 import type * as gax from 'google-gax';
-import type {Callback, CallOptions, Descriptors, ClientOptions, GrpcClientOptions, LROperation} from 'google-gax';
+import type {
+  Callback,
+  CallOptions,
+  Descriptors,
+  ClientOptions,
+  GrpcClientOptions,
+  LROperation,
+} from 'google-gax';
 
 import * as protos from '../../protos/protos';
 import jsonProtos = require('../../protos/protos.json');
-import {loggingUtils as logging, decodeAnyProtosInArray} from 'google-gax';
+import { loggingUtils as logging, decodeAnyProtosInArray } from 'google-gax';
 
 /**
  * Client JSON configuration object, loaded from
@@ -50,7 +57,7 @@ export class CloudShellServiceClient {
   private _gaxModule: typeof gax | typeof gax.fallback;
   private _gaxGrpc: gax.GrpcClient | gax.fallback.GrpcClient;
   private _protos: {};
-  private _defaults: {[method: string]: gax.CallSettings};
+  private _defaults: { [method: string]: gax.CallSettings };
   private _universeDomain: string;
   private _servicePath: string;
   private _log = logging.log('shell');
@@ -63,10 +70,10 @@ export class CloudShellServiceClient {
     batching: {},
   };
   warn: (code: string, message: string, warnType?: string) => void;
-  innerApiCalls: {[name: string]: Function};
-  pathTemplates: {[name: string]: gax.PathTemplate};
+  innerApiCalls: { [name: string]: Function };
+  pathTemplates: { [name: string]: gax.PathTemplate };
   operationsClient: gax.OperationsClient;
-  cloudShellServiceStub?: Promise<{[name: string]: Function}>;
+  cloudShellServiceStub?: Promise<{ [name: string]: Function }>;
 
   /**
    * Construct an instance of CloudShellServiceClient.
@@ -107,21 +114,42 @@ export class CloudShellServiceClient {
    *     const client = new CloudShellServiceClient({fallback: true}, gax);
    *     ```
    */
-  constructor(opts?: ClientOptions, gaxInstance?: typeof gax | typeof gax.fallback) {
+  constructor(
+    opts?: ClientOptions,
+    gaxInstance?: typeof gax | typeof gax.fallback,
+  ) {
     // Ensure that options include all the required fields.
     const staticMembers = this.constructor as typeof CloudShellServiceClient;
-    if (opts?.universe_domain && opts?.universeDomain && opts?.universe_domain !== opts?.universeDomain) {
-      throw new Error('Please set either universe_domain or universeDomain, but not both.');
+    if (
+      opts?.universe_domain &&
+      opts?.universeDomain &&
+      opts?.universe_domain !== opts?.universeDomain
+    ) {
+      throw new Error(
+        'Please set either universe_domain or universeDomain, but not both.',
+      );
     }
-    const universeDomainEnvVar = (typeof process === 'object' && typeof process.env === 'object') ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] : undefined;
-    this._universeDomain = opts?.universeDomain ?? opts?.universe_domain ?? universeDomainEnvVar ?? 'googleapis.com';
+    const universeDomainEnvVar =
+      typeof process === 'object' && typeof process.env === 'object'
+        ? process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN']
+        : undefined;
+    this._universeDomain =
+      opts?.universeDomain ??
+      opts?.universe_domain ??
+      universeDomainEnvVar ??
+      'googleapis.com';
     this._servicePath = 'cloudshell.' + this._universeDomain;
-    const servicePath = opts?.servicePath || opts?.apiEndpoint || this._servicePath;
-    this._providedCustomServicePath = !!(opts?.servicePath || opts?.apiEndpoint);
+    const servicePath =
+      opts?.servicePath || opts?.apiEndpoint || this._servicePath;
+    this._providedCustomServicePath = !!(
+      opts?.servicePath || opts?.apiEndpoint
+    );
     const port = opts?.port || staticMembers.port;
     const clientConfig = opts?.clientConfig ?? {};
-    const fallback = opts?.fallback ?? (typeof window !== 'undefined' && typeof window?.fetch === 'function');
-    opts = Object.assign({servicePath, port, clientConfig, fallback}, opts);
+    const fallback =
+      opts?.fallback ??
+      (typeof window !== 'undefined' && typeof window?.fetch === 'function');
+    opts = Object.assign({ servicePath, port, clientConfig, fallback }, opts);
 
     // Request numeric enum values if REST transport is used.
     opts.numericEnums = true;
@@ -146,7 +174,7 @@ export class CloudShellServiceClient {
     this._opts = opts;
 
     // Save the auth object to the client, for use by other methods.
-    this.auth = (this._gaxGrpc.auth as gax.GoogleAuth);
+    this.auth = this._gaxGrpc.auth as gax.GoogleAuth;
 
     // Set useJWTAccessWithScope on the auth object.
     this.auth.useJWTAccessWithScope = true;
@@ -160,10 +188,7 @@ export class CloudShellServiceClient {
     }
 
     // Determine the client header string.
-    const clientHeader = [
-      `gax/${this._gaxModule.version}`,
-      `gapic/${version}`,
-    ];
+    const clientHeader = [`gax/${this._gaxModule.version}`, `gapic/${version}`];
     if (typeof process === 'object' && 'versions' in process) {
       clientHeader.push(`gl-node/${process.versions.node}`);
     } else {
@@ -185,7 +210,7 @@ export class CloudShellServiceClient {
     // Create useful helper objects for these.
     this.pathTemplates = {
       environmentPathTemplate: new this._gaxModule.PathTemplate(
-        'users/{user}/environments/{environment}'
+        'users/{user}/environments/{environment}',
       ),
     };
 
@@ -195,53 +220,70 @@ export class CloudShellServiceClient {
     // rather than holding a request open.
     const lroOptions: GrpcClientOptions = {
       auth: this.auth,
-      grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined
+      grpc: 'grpc' in this._gaxGrpc ? this._gaxGrpc.grpc : undefined,
     };
     if (opts.fallback) {
       lroOptions.protoJson = protoFilesRoot;
       lroOptions.httpRules = [];
     }
-    this.operationsClient = this._gaxModule.lro(lroOptions).operationsClient(opts);
+    this.operationsClient = this._gaxModule
+      .lro(lroOptions)
+      .operationsClient(opts);
     const startEnvironmentResponse = protoFilesRoot.lookup(
-      '.google.cloud.shell.v1.StartEnvironmentResponse') as gax.protobuf.Type;
+      '.google.cloud.shell.v1.StartEnvironmentResponse',
+    ) as gax.protobuf.Type;
     const startEnvironmentMetadata = protoFilesRoot.lookup(
-      '.google.cloud.shell.v1.StartEnvironmentMetadata') as gax.protobuf.Type;
+      '.google.cloud.shell.v1.StartEnvironmentMetadata',
+    ) as gax.protobuf.Type;
     const authorizeEnvironmentResponse = protoFilesRoot.lookup(
-      '.google.cloud.shell.v1.AuthorizeEnvironmentResponse') as gax.protobuf.Type;
+      '.google.cloud.shell.v1.AuthorizeEnvironmentResponse',
+    ) as gax.protobuf.Type;
     const authorizeEnvironmentMetadata = protoFilesRoot.lookup(
-      '.google.cloud.shell.v1.AuthorizeEnvironmentMetadata') as gax.protobuf.Type;
+      '.google.cloud.shell.v1.AuthorizeEnvironmentMetadata',
+    ) as gax.protobuf.Type;
     const addPublicKeyResponse = protoFilesRoot.lookup(
-      '.google.cloud.shell.v1.AddPublicKeyResponse') as gax.protobuf.Type;
+      '.google.cloud.shell.v1.AddPublicKeyResponse',
+    ) as gax.protobuf.Type;
     const addPublicKeyMetadata = protoFilesRoot.lookup(
-      '.google.cloud.shell.v1.AddPublicKeyMetadata') as gax.protobuf.Type;
+      '.google.cloud.shell.v1.AddPublicKeyMetadata',
+    ) as gax.protobuf.Type;
     const removePublicKeyResponse = protoFilesRoot.lookup(
-      '.google.cloud.shell.v1.RemovePublicKeyResponse') as gax.protobuf.Type;
+      '.google.cloud.shell.v1.RemovePublicKeyResponse',
+    ) as gax.protobuf.Type;
     const removePublicKeyMetadata = protoFilesRoot.lookup(
-      '.google.cloud.shell.v1.RemovePublicKeyMetadata') as gax.protobuf.Type;
+      '.google.cloud.shell.v1.RemovePublicKeyMetadata',
+    ) as gax.protobuf.Type;
 
     this.descriptors.longrunning = {
       startEnvironment: new this._gaxModule.LongrunningDescriptor(
         this.operationsClient,
         startEnvironmentResponse.decode.bind(startEnvironmentResponse),
-        startEnvironmentMetadata.decode.bind(startEnvironmentMetadata)),
+        startEnvironmentMetadata.decode.bind(startEnvironmentMetadata),
+      ),
       authorizeEnvironment: new this._gaxModule.LongrunningDescriptor(
         this.operationsClient,
         authorizeEnvironmentResponse.decode.bind(authorizeEnvironmentResponse),
-        authorizeEnvironmentMetadata.decode.bind(authorizeEnvironmentMetadata)),
+        authorizeEnvironmentMetadata.decode.bind(authorizeEnvironmentMetadata),
+      ),
       addPublicKey: new this._gaxModule.LongrunningDescriptor(
         this.operationsClient,
         addPublicKeyResponse.decode.bind(addPublicKeyResponse),
-        addPublicKeyMetadata.decode.bind(addPublicKeyMetadata)),
+        addPublicKeyMetadata.decode.bind(addPublicKeyMetadata),
+      ),
       removePublicKey: new this._gaxModule.LongrunningDescriptor(
         this.operationsClient,
         removePublicKeyResponse.decode.bind(removePublicKeyResponse),
-        removePublicKeyMetadata.decode.bind(removePublicKeyMetadata))
+        removePublicKeyMetadata.decode.bind(removePublicKeyMetadata),
+      ),
     };
 
     // Put together the default options sent with requests.
     this._defaults = this._gaxGrpc.constructSettings(
-        'google.cloud.shell.v1.CloudShellService', gapicConfig as gax.ClientConfig,
-        opts.clientConfig || {}, {'x-goog-api-client': clientHeader.join(' ')});
+      'google.cloud.shell.v1.CloudShellService',
+      gapicConfig as gax.ClientConfig,
+      opts.clientConfig || {},
+      { 'x-goog-api-client': clientHeader.join(' ') },
+    );
 
     // Set up a dictionary of "inner API calls"; the core implementation
     // of calling the API is handled in `google-gax`, with this code
@@ -272,37 +314,46 @@ export class CloudShellServiceClient {
     // Put together the "service stub" for
     // google.cloud.shell.v1.CloudShellService.
     this.cloudShellServiceStub = this._gaxGrpc.createStub(
-        this._opts.fallback ?
-          (this._protos as protobuf.Root).lookupService('google.cloud.shell.v1.CloudShellService') :
-          // eslint-disable-next-line @typescript-eslint/no-explicit-any
+      this._opts.fallback
+        ? (this._protos as protobuf.Root).lookupService(
+            'google.cloud.shell.v1.CloudShellService',
+          )
+        : // eslint-disable-next-line @typescript-eslint/no-explicit-any
           (this._protos as any).google.cloud.shell.v1.CloudShellService,
-        this._opts, this._providedCustomServicePath) as Promise<{[method: string]: Function}>;
+      this._opts,
+      this._providedCustomServicePath,
+    ) as Promise<{ [method: string]: Function }>;
 
     // Iterate over each of the methods that the service provides
     // and create an API call method for each.
-    const cloudShellServiceStubMethods =
-        ['getEnvironment', 'startEnvironment', 'authorizeEnvironment', 'addPublicKey', 'removePublicKey'];
+    const cloudShellServiceStubMethods = [
+      'getEnvironment',
+      'startEnvironment',
+      'authorizeEnvironment',
+      'addPublicKey',
+      'removePublicKey',
+    ];
     for (const methodName of cloudShellServiceStubMethods) {
       const callPromise = this.cloudShellServiceStub.then(
-        stub => (...args: Array<{}>) => {
-          if (this._terminated) {
-            return Promise.reject('The client has already been closed.');
-          }
-          const func = stub[methodName];
-          return func.apply(stub, args);
-        },
-        (err: Error|null|undefined) => () => {
+        (stub) =>
+          (...args: Array<{}>) => {
+            if (this._terminated) {
+              return Promise.reject('The client has already been closed.');
+            }
+            const func = stub[methodName];
+            return func.apply(stub, args);
+          },
+        (err: Error | null | undefined) => () => {
           throw err;
-        });
+        },
+      );
 
-      const descriptor =
-        this.descriptors.longrunning[methodName] ||
-        undefined;
+      const descriptor = this.descriptors.longrunning[methodName] || undefined;
       const apiCall = this._gaxModule.createApiCall(
         callPromise,
         this._defaults[methodName],
         descriptor,
-        this._opts.fallback
+        this._opts.fallback,
       );
 
       this.innerApiCalls[methodName] = apiCall;
@@ -317,8 +368,14 @@ export class CloudShellServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get servicePath() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static servicePath is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static servicePath is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'cloudshell.googleapis.com';
   }
@@ -329,8 +386,14 @@ export class CloudShellServiceClient {
    * @returns {string} The DNS address for this service.
    */
   static get apiEndpoint() {
-    if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-      process.emitWarning('Static apiEndpoint is deprecated, please use the instance method instead.', 'DeprecationWarning');
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      process.emitWarning(
+        'Static apiEndpoint is deprecated, please use the instance method instead.',
+        'DeprecationWarning',
+      );
     }
     return 'cloudshell.googleapis.com';
   }
@@ -361,9 +424,7 @@ export class CloudShellServiceClient {
    * @returns {string[]} List of default scopes.
    */
   static get scopes() {
-    return [
-      'https://www.googleapis.com/auth/cloud-platform'
-    ];
+    return ['https://www.googleapis.com/auth/cloud-platform'];
   }
 
   getProjectId(): Promise<string>;
@@ -372,8 +433,9 @@ export class CloudShellServiceClient {
    * Return the project ID used by this class.
    * @returns {Promise} A promise that resolves to string containing the project ID.
    */
-  getProjectId(callback?: Callback<string, undefined, undefined>):
-      Promise<string>|void {
+  getProjectId(
+    callback?: Callback<string, undefined, undefined>,
+  ): Promise<string> | void {
     if (callback) {
       this.auth.getProjectId(callback);
       return;
@@ -384,573 +446,855 @@ export class CloudShellServiceClient {
   // -------------------
   // -- Service calls --
   // -------------------
-/**
- * Gets an environment. Returns NOT_FOUND if the environment does not exist.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Required. Name of the requested resource, for example `users/me/environments/default`
- *   or `users/someone@example.com/environments/default`.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing {@link protos.google.cloud.shell.v1.Environment|Environment}.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/cloud_shell_service.get_environment.js</caption>
- * region_tag:cloudshell_v1_generated_CloudShellService_GetEnvironment_async
- */
+  /**
+   * Gets an environment. Returns NOT_FOUND if the environment does not exist.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Required. Name of the requested resource, for example `users/me/environments/default`
+   *   or `users/someone@example.com/environments/default`.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing {@link protos.google.cloud.shell.v1.Environment|Environment}.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#regular-methods | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/cloud_shell_service.get_environment.js</caption>
+   * region_tag:cloudshell_v1_generated_CloudShellService_GetEnvironment_async
+   */
   getEnvironment(
-      request?: protos.google.cloud.shell.v1.IGetEnvironmentRequest,
-      options?: CallOptions):
-      Promise<[
-        protos.google.cloud.shell.v1.IEnvironment,
-        protos.google.cloud.shell.v1.IGetEnvironmentRequest|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.shell.v1.IGetEnvironmentRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      protos.google.cloud.shell.v1.IEnvironment,
+      protos.google.cloud.shell.v1.IGetEnvironmentRequest | undefined,
+      {} | undefined,
+    ]
+  >;
   getEnvironment(
-      request: protos.google.cloud.shell.v1.IGetEnvironmentRequest,
-      options: CallOptions,
-      callback: Callback<
-          protos.google.cloud.shell.v1.IEnvironment,
-          protos.google.cloud.shell.v1.IGetEnvironmentRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IGetEnvironmentRequest,
+    options: CallOptions,
+    callback: Callback<
+      protos.google.cloud.shell.v1.IEnvironment,
+      protos.google.cloud.shell.v1.IGetEnvironmentRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getEnvironment(
-      request: protos.google.cloud.shell.v1.IGetEnvironmentRequest,
-      callback: Callback<
-          protos.google.cloud.shell.v1.IEnvironment,
-          protos.google.cloud.shell.v1.IGetEnvironmentRequest|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IGetEnvironmentRequest,
+    callback: Callback<
+      protos.google.cloud.shell.v1.IEnvironment,
+      protos.google.cloud.shell.v1.IGetEnvironmentRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   getEnvironment(
-      request?: protos.google.cloud.shell.v1.IGetEnvironmentRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          protos.google.cloud.shell.v1.IEnvironment,
-          protos.google.cloud.shell.v1.IGetEnvironmentRequest|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
+    request?: protos.google.cloud.shell.v1.IGetEnvironmentRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
           protos.google.cloud.shell.v1.IEnvironment,
-          protos.google.cloud.shell.v1.IGetEnvironmentRequest|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        protos.google.cloud.shell.v1.IEnvironment,
-        protos.google.cloud.shell.v1.IGetEnvironmentRequest|undefined, {}|undefined
-      ]>|void {
+          | protos.google.cloud.shell.v1.IGetEnvironmentRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      protos.google.cloud.shell.v1.IEnvironment,
+      protos.google.cloud.shell.v1.IGetEnvironmentRequest | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      protos.google.cloud.shell.v1.IEnvironment,
+      protos.google.cloud.shell.v1.IGetEnvironmentRequest | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
     this._log.info('getEnvironment request %j', request);
-    const wrappedCallback: Callback<
-        protos.google.cloud.shell.v1.IEnvironment,
-        protos.google.cloud.shell.v1.IGetEnvironmentRequest|null|undefined,
-        {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          protos.google.cloud.shell.v1.IEnvironment,
+          | protos.google.cloud.shell.v1.IGetEnvironmentRequest
+          | null
+          | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, options, rawResponse) => {
           this._log.info('getEnvironment response %j', response);
           callback!(error, response, options, rawResponse); // We verified callback above.
         }
       : undefined;
-    return this.innerApiCalls.getEnvironment(request, options, wrappedCallback)
-      ?.then(([response, options, rawResponse]: [
-        protos.google.cloud.shell.v1.IEnvironment,
-        protos.google.cloud.shell.v1.IGetEnvironmentRequest|undefined,
-        {}|undefined
-      ]) => {
-        this._log.info('getEnvironment response %j', response);
-        return [response, options, rawResponse];
-      }).catch((error: any) => {
-        if (error && 'statusDetails' in error && error.statusDetails instanceof Array) {
-          const protos = this._gaxModule.protobuf.Root.fromJSON(jsonProtos) as unknown as gax.protobuf.Type;
-          error.statusDetails = decodeAnyProtosInArray(error.statusDetails, protos);
+    return this.innerApiCalls
+      .getEnvironment(request, options, wrappedCallback)
+      ?.then(
+        ([response, options, rawResponse]: [
+          protos.google.cloud.shell.v1.IEnvironment,
+          protos.google.cloud.shell.v1.IGetEnvironmentRequest | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('getEnvironment response %j', response);
+          return [response, options, rawResponse];
+        },
+      )
+      .catch((error: any) => {
+        if (
+          error &&
+          'statusDetails' in error &&
+          error.statusDetails instanceof Array
+        ) {
+          const protos = this._gaxModule.protobuf.Root.fromJSON(
+            jsonProtos,
+          ) as unknown as gax.protobuf.Type;
+          error.statusDetails = decodeAnyProtosInArray(
+            error.statusDetails,
+            protos,
+          );
         }
         throw error;
       });
   }
 
-/**
- * Starts an existing environment, allowing clients to connect to it. The
- * returned operation will contain an instance of StartEnvironmentMetadata in
- * its metadata field. Users can wait for the environment to start by polling
- * this operation via GetOperation. Once the environment has finished starting
- * and is ready to accept connections, the operation will contain a
- * StartEnvironmentResponse in its response field.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Name of the resource that should be started, for example
- *   `users/me/environments/default` or
- *   `users/someone@example.com/environments/default`.
- * @param {string} request.accessToken
- *   The initial access token passed to the environment. If this is present and
- *   valid, the environment will be pre-authenticated with gcloud so that the
- *   user can run gcloud commands in Cloud Shell without having to log in. This
- *   code can be updated later by calling AuthorizeEnvironment.
- * @param {string[]} request.publicKeys
- *   Public keys that should be added to the environment before it is started.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing
- *   a long running operation. Its `promise()` method returns a promise
- *   you can `await` for.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/cloud_shell_service.start_environment.js</caption>
- * region_tag:cloudshell_v1_generated_CloudShellService_StartEnvironment_async
- */
+  /**
+   * Starts an existing environment, allowing clients to connect to it. The
+   * returned operation will contain an instance of StartEnvironmentMetadata in
+   * its metadata field. Users can wait for the environment to start by polling
+   * this operation via GetOperation. Once the environment has finished starting
+   * and is ready to accept connections, the operation will contain a
+   * StartEnvironmentResponse in its response field.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Name of the resource that should be started, for example
+   *   `users/me/environments/default` or
+   *   `users/someone@example.com/environments/default`.
+   * @param {string} request.accessToken
+   *   The initial access token passed to the environment. If this is present and
+   *   valid, the environment will be pre-authenticated with gcloud so that the
+   *   user can run gcloud commands in Cloud Shell without having to log in. This
+   *   code can be updated later by calling AuthorizeEnvironment.
+   * @param {string[]} request.publicKeys
+   *   Public keys that should be added to the environment before it is started.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing
+   *   a long running operation. Its `promise()` method returns a promise
+   *   you can `await` for.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/cloud_shell_service.start_environment.js</caption>
+   * region_tag:cloudshell_v1_generated_CloudShellService_StartEnvironment_async
+   */
   startEnvironment(
-      request?: protos.google.cloud.shell.v1.IStartEnvironmentRequest,
-      options?: CallOptions):
-      Promise<[
-        LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>,
-        protos.google.longrunning.IOperation|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.shell.v1.IStartEnvironmentRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      LROperation<
+        protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+        protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | undefined,
+      {} | undefined,
+    ]
+  >;
   startEnvironment(
-      request: protos.google.cloud.shell.v1.IStartEnvironmentRequest,
-      options: CallOptions,
-      callback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IStartEnvironmentRequest,
+    options: CallOptions,
+    callback: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+        protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   startEnvironment(
-      request: protos.google.cloud.shell.v1.IStartEnvironmentRequest,
-      callback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IStartEnvironmentRequest,
+    callback: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+        protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   startEnvironment(
-      request?: protos.google.cloud.shell.v1.IStartEnvironmentRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
-          LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>,
-        protos.google.longrunning.IOperation|undefined, {}|undefined
-      ]>|void {
+    request?: protos.google.cloud.shell.v1.IStartEnvironmentRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
+          LROperation<
+            protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+            protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+        protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      LROperation<
+        protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+        protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          LROperation<
+            protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+            protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, rawResponse, _) => {
           this._log.info('startEnvironment response %j', rawResponse);
           callback!(error, response, rawResponse, _); // We verified callback above.
         }
       : undefined;
     this._log.info('startEnvironment request %j', request);
-    return this.innerApiCalls.startEnvironment(request, options, wrappedCallback)
-    ?.then(([response, rawResponse, _]: [
-      LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>,
-      protos.google.longrunning.IOperation|undefined, {}|undefined
-    ]) => {
-      this._log.info('startEnvironment response %j', rawResponse);
-      return [response, rawResponse, _];
-    });
+    return this.innerApiCalls
+      .startEnvironment(request, options, wrappedCallback)
+      ?.then(
+        ([response, rawResponse, _]: [
+          LROperation<
+            protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+            protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+          >,
+          protos.google.longrunning.IOperation | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('startEnvironment response %j', rawResponse);
+          return [response, rawResponse, _];
+        },
+      );
   }
-/**
- * Check the status of the long running operation returned by `startEnvironment()`.
- * @param {String} name
- *   The operation name that will be passed.
- * @returns {Promise} - The promise which resolves to an object.
- *   The decoded operation object has result and metadata field to get information from.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/cloud_shell_service.start_environment.js</caption>
- * region_tag:cloudshell_v1_generated_CloudShellService_StartEnvironment_async
- */
-  async checkStartEnvironmentProgress(name: string): Promise<LROperation<protos.google.cloud.shell.v1.StartEnvironmentResponse, protos.google.cloud.shell.v1.StartEnvironmentMetadata>>{
+  /**
+   * Check the status of the long running operation returned by `startEnvironment()`.
+   * @param {String} name
+   *   The operation name that will be passed.
+   * @returns {Promise} - The promise which resolves to an object.
+   *   The decoded operation object has result and metadata field to get information from.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/cloud_shell_service.start_environment.js</caption>
+   * region_tag:cloudshell_v1_generated_CloudShellService_StartEnvironment_async
+   */
+  async checkStartEnvironmentProgress(
+    name: string,
+  ): Promise<
+    LROperation<
+      protos.google.cloud.shell.v1.StartEnvironmentResponse,
+      protos.google.cloud.shell.v1.StartEnvironmentMetadata
+    >
+  > {
     this._log.info('startEnvironment long-running');
-    const request = new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest({name});
+    const request =
+      new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest(
+        { name },
+      );
     const [operation] = await this.operationsClient.getOperation(request);
-    const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.startEnvironment, this._gaxModule.createDefaultBackoffSettings());
-    return decodeOperation as LROperation<protos.google.cloud.shell.v1.StartEnvironmentResponse, protos.google.cloud.shell.v1.StartEnvironmentMetadata>;
+    const decodeOperation = new this._gaxModule.Operation(
+      operation,
+      this.descriptors.longrunning.startEnvironment,
+      this._gaxModule.createDefaultBackoffSettings(),
+    );
+    return decodeOperation as LROperation<
+      protos.google.cloud.shell.v1.StartEnvironmentResponse,
+      protos.google.cloud.shell.v1.StartEnvironmentMetadata
+    >;
   }
-/**
- * Sends OAuth credentials to a running environment on behalf of a user. When
- * this completes, the environment will be authorized to run various Google
- * Cloud command line tools without requiring the user to manually
- * authenticate.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.name
- *   Name of the resource that should receive the credentials, for example
- *   `users/me/environments/default` or
- *   `users/someone@example.com/environments/default`.
- * @param {string} request.accessToken
- *   The OAuth access token that should be sent to the environment.
- * @param {string} request.idToken
- *   The OAuth ID token that should be sent to the environment.
- * @param {google.protobuf.Timestamp} request.expireTime
- *   The time when the credentials expire. If not set, defaults to one hour from
- *   when the server received the request.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing
- *   a long running operation. Its `promise()` method returns a promise
- *   you can `await` for.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/cloud_shell_service.authorize_environment.js</caption>
- * region_tag:cloudshell_v1_generated_CloudShellService_AuthorizeEnvironment_async
- */
+  /**
+   * Sends OAuth credentials to a running environment on behalf of a user. When
+   * this completes, the environment will be authorized to run various Google
+   * Cloud command line tools without requiring the user to manually
+   * authenticate.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.name
+   *   Name of the resource that should receive the credentials, for example
+   *   `users/me/environments/default` or
+   *   `users/someone@example.com/environments/default`.
+   * @param {string} request.accessToken
+   *   The OAuth access token that should be sent to the environment.
+   * @param {string} request.idToken
+   *   The OAuth ID token that should be sent to the environment.
+   * @param {google.protobuf.Timestamp} request.expireTime
+   *   The time when the credentials expire. If not set, defaults to one hour from
+   *   when the server received the request.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing
+   *   a long running operation. Its `promise()` method returns a promise
+   *   you can `await` for.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/cloud_shell_service.authorize_environment.js</caption>
+   * region_tag:cloudshell_v1_generated_CloudShellService_AuthorizeEnvironment_async
+   */
   authorizeEnvironment(
-      request?: protos.google.cloud.shell.v1.IAuthorizeEnvironmentRequest,
-      options?: CallOptions):
-      Promise<[
-        LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>,
-        protos.google.longrunning.IOperation|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.shell.v1.IAuthorizeEnvironmentRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      LROperation<
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | undefined,
+      {} | undefined,
+    ]
+  >;
   authorizeEnvironment(
-      request: protos.google.cloud.shell.v1.IAuthorizeEnvironmentRequest,
-      options: CallOptions,
-      callback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IAuthorizeEnvironmentRequest,
+    options: CallOptions,
+    callback: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   authorizeEnvironment(
-      request: protos.google.cloud.shell.v1.IAuthorizeEnvironmentRequest,
-      callback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IAuthorizeEnvironmentRequest,
+    callback: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   authorizeEnvironment(
-      request?: protos.google.cloud.shell.v1.IAuthorizeEnvironmentRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
-          LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>,
-        protos.google.longrunning.IOperation|undefined, {}|undefined
-      ]>|void {
+    request?: protos.google.cloud.shell.v1.IAuthorizeEnvironmentRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
+          LROperation<
+            protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+            protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      LROperation<
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+      >,
+      protos.google.longrunning.IOperation | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'name': request.name ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          LROperation<
+            protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+            protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, rawResponse, _) => {
           this._log.info('authorizeEnvironment response %j', rawResponse);
           callback!(error, response, rawResponse, _); // We verified callback above.
         }
       : undefined;
     this._log.info('authorizeEnvironment request %j', request);
-    return this.innerApiCalls.authorizeEnvironment(request, options, wrappedCallback)
-    ?.then(([response, rawResponse, _]: [
-      LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>,
-      protos.google.longrunning.IOperation|undefined, {}|undefined
-    ]) => {
-      this._log.info('authorizeEnvironment response %j', rawResponse);
-      return [response, rawResponse, _];
-    });
+    return this.innerApiCalls
+      .authorizeEnvironment(request, options, wrappedCallback)
+      ?.then(
+        ([response, rawResponse, _]: [
+          LROperation<
+            protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+            protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+          >,
+          protos.google.longrunning.IOperation | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('authorizeEnvironment response %j', rawResponse);
+          return [response, rawResponse, _];
+        },
+      );
   }
-/**
- * Check the status of the long running operation returned by `authorizeEnvironment()`.
- * @param {String} name
- *   The operation name that will be passed.
- * @returns {Promise} - The promise which resolves to an object.
- *   The decoded operation object has result and metadata field to get information from.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/cloud_shell_service.authorize_environment.js</caption>
- * region_tag:cloudshell_v1_generated_CloudShellService_AuthorizeEnvironment_async
- */
-  async checkAuthorizeEnvironmentProgress(name: string): Promise<LROperation<protos.google.cloud.shell.v1.AuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.AuthorizeEnvironmentMetadata>>{
+  /**
+   * Check the status of the long running operation returned by `authorizeEnvironment()`.
+   * @param {String} name
+   *   The operation name that will be passed.
+   * @returns {Promise} - The promise which resolves to an object.
+   *   The decoded operation object has result and metadata field to get information from.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/cloud_shell_service.authorize_environment.js</caption>
+   * region_tag:cloudshell_v1_generated_CloudShellService_AuthorizeEnvironment_async
+   */
+  async checkAuthorizeEnvironmentProgress(
+    name: string,
+  ): Promise<
+    LROperation<
+      protos.google.cloud.shell.v1.AuthorizeEnvironmentResponse,
+      protos.google.cloud.shell.v1.AuthorizeEnvironmentMetadata
+    >
+  > {
     this._log.info('authorizeEnvironment long-running');
-    const request = new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest({name});
+    const request =
+      new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest(
+        { name },
+      );
     const [operation] = await this.operationsClient.getOperation(request);
-    const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.authorizeEnvironment, this._gaxModule.createDefaultBackoffSettings());
-    return decodeOperation as LROperation<protos.google.cloud.shell.v1.AuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.AuthorizeEnvironmentMetadata>;
+    const decodeOperation = new this._gaxModule.Operation(
+      operation,
+      this.descriptors.longrunning.authorizeEnvironment,
+      this._gaxModule.createDefaultBackoffSettings(),
+    );
+    return decodeOperation as LROperation<
+      protos.google.cloud.shell.v1.AuthorizeEnvironmentResponse,
+      protos.google.cloud.shell.v1.AuthorizeEnvironmentMetadata
+    >;
   }
-/**
- * Adds a public SSH key to an environment, allowing clients with the
- * corresponding private key to connect to that environment via SSH. If a key
- * with the same content already exists, this will error with ALREADY_EXISTS.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.environment
- *   Environment this key should be added to, e.g.
- *   `users/me/environments/default`.
- * @param {string} request.key
- *   Key that should be added to the environment. Supported formats are
- *   `ssh-dss` (see RFC4253), `ssh-rsa` (see RFC4253), `ecdsa-sha2-nistp256`
- *   (see RFC5656), `ecdsa-sha2-nistp384` (see RFC5656) and
- *   `ecdsa-sha2-nistp521` (see RFC5656). It should be structured as
- *   &lt;format&gt; &lt;content&gt;, where &lt;content&gt; part is encoded with
- *   Base64.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing
- *   a long running operation. Its `promise()` method returns a promise
- *   you can `await` for.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/cloud_shell_service.add_public_key.js</caption>
- * region_tag:cloudshell_v1_generated_CloudShellService_AddPublicKey_async
- */
+  /**
+   * Adds a public SSH key to an environment, allowing clients with the
+   * corresponding private key to connect to that environment via SSH. If a key
+   * with the same content already exists, this will error with ALREADY_EXISTS.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.environment
+   *   Environment this key should be added to, e.g.
+   *   `users/me/environments/default`.
+   * @param {string} request.key
+   *   Key that should be added to the environment. Supported formats are
+   *   `ssh-dss` (see RFC4253), `ssh-rsa` (see RFC4253), `ecdsa-sha2-nistp256`
+   *   (see RFC5656), `ecdsa-sha2-nistp384` (see RFC5656) and
+   *   `ecdsa-sha2-nistp521` (see RFC5656). It should be structured as
+   *   &lt;format&gt; &lt;content&gt;, where &lt;content&gt; part is encoded with
+   *   Base64.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing
+   *   a long running operation. Its `promise()` method returns a promise
+   *   you can `await` for.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/cloud_shell_service.add_public_key.js</caption>
+   * region_tag:cloudshell_v1_generated_CloudShellService_AddPublicKey_async
+   */
   addPublicKey(
-      request?: protos.google.cloud.shell.v1.IAddPublicKeyRequest,
-      options?: CallOptions):
-      Promise<[
-        LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>,
-        protos.google.longrunning.IOperation|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.shell.v1.IAddPublicKeyRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      LROperation<
+        protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+        protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | undefined,
+      {} | undefined,
+    ]
+  >;
   addPublicKey(
-      request: protos.google.cloud.shell.v1.IAddPublicKeyRequest,
-      options: CallOptions,
-      callback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IAddPublicKeyRequest,
+    options: CallOptions,
+    callback: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+        protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   addPublicKey(
-      request: protos.google.cloud.shell.v1.IAddPublicKeyRequest,
-      callback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IAddPublicKeyRequest,
+    callback: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+        protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   addPublicKey(
-      request?: protos.google.cloud.shell.v1.IAddPublicKeyRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
-          LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>,
-        protos.google.longrunning.IOperation|undefined, {}|undefined
-      ]>|void {
+    request?: protos.google.cloud.shell.v1.IAddPublicKeyRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
+          LROperation<
+            protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+            protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+        protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      LROperation<
+        protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+        protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'environment': request.environment ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        environment: request.environment ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          LROperation<
+            protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+            protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, rawResponse, _) => {
           this._log.info('addPublicKey response %j', rawResponse);
           callback!(error, response, rawResponse, _); // We verified callback above.
         }
       : undefined;
     this._log.info('addPublicKey request %j', request);
-    return this.innerApiCalls.addPublicKey(request, options, wrappedCallback)
-    ?.then(([response, rawResponse, _]: [
-      LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>,
-      protos.google.longrunning.IOperation|undefined, {}|undefined
-    ]) => {
-      this._log.info('addPublicKey response %j', rawResponse);
-      return [response, rawResponse, _];
-    });
+    return this.innerApiCalls
+      .addPublicKey(request, options, wrappedCallback)
+      ?.then(
+        ([response, rawResponse, _]: [
+          LROperation<
+            protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+            protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+          >,
+          protos.google.longrunning.IOperation | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('addPublicKey response %j', rawResponse);
+          return [response, rawResponse, _];
+        },
+      );
   }
-/**
- * Check the status of the long running operation returned by `addPublicKey()`.
- * @param {String} name
- *   The operation name that will be passed.
- * @returns {Promise} - The promise which resolves to an object.
- *   The decoded operation object has result and metadata field to get information from.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/cloud_shell_service.add_public_key.js</caption>
- * region_tag:cloudshell_v1_generated_CloudShellService_AddPublicKey_async
- */
-  async checkAddPublicKeyProgress(name: string): Promise<LROperation<protos.google.cloud.shell.v1.AddPublicKeyResponse, protos.google.cloud.shell.v1.AddPublicKeyMetadata>>{
+  /**
+   * Check the status of the long running operation returned by `addPublicKey()`.
+   * @param {String} name
+   *   The operation name that will be passed.
+   * @returns {Promise} - The promise which resolves to an object.
+   *   The decoded operation object has result and metadata field to get information from.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/cloud_shell_service.add_public_key.js</caption>
+   * region_tag:cloudshell_v1_generated_CloudShellService_AddPublicKey_async
+   */
+  async checkAddPublicKeyProgress(
+    name: string,
+  ): Promise<
+    LROperation<
+      protos.google.cloud.shell.v1.AddPublicKeyResponse,
+      protos.google.cloud.shell.v1.AddPublicKeyMetadata
+    >
+  > {
     this._log.info('addPublicKey long-running');
-    const request = new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest({name});
+    const request =
+      new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest(
+        { name },
+      );
     const [operation] = await this.operationsClient.getOperation(request);
-    const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.addPublicKey, this._gaxModule.createDefaultBackoffSettings());
-    return decodeOperation as LROperation<protos.google.cloud.shell.v1.AddPublicKeyResponse, protos.google.cloud.shell.v1.AddPublicKeyMetadata>;
+    const decodeOperation = new this._gaxModule.Operation(
+      operation,
+      this.descriptors.longrunning.addPublicKey,
+      this._gaxModule.createDefaultBackoffSettings(),
+    );
+    return decodeOperation as LROperation<
+      protos.google.cloud.shell.v1.AddPublicKeyResponse,
+      protos.google.cloud.shell.v1.AddPublicKeyMetadata
+    >;
   }
-/**
- * Removes a public SSH key from an environment. Clients will no longer be
- * able to connect to the environment using the corresponding private key.
- * If a key with the same content is not present, this will error with
- * NOT_FOUND.
- *
- * @param {Object} request
- *   The request object that will be sent.
- * @param {string} request.environment
- *   Environment this key should be removed from, e.g.
- *   `users/me/environments/default`.
- * @param {string} request.key
- *   Key that should be removed from the environment.
- * @param {object} [options]
- *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
- * @returns {Promise} - The promise which resolves to an array.
- *   The first element of the array is an object representing
- *   a long running operation. Its `promise()` method returns a promise
- *   you can `await` for.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/cloud_shell_service.remove_public_key.js</caption>
- * region_tag:cloudshell_v1_generated_CloudShellService_RemovePublicKey_async
- */
+  /**
+   * Removes a public SSH key from an environment. Clients will no longer be
+   * able to connect to the environment using the corresponding private key.
+   * If a key with the same content is not present, this will error with
+   * NOT_FOUND.
+   *
+   * @param {Object} request
+   *   The request object that will be sent.
+   * @param {string} request.environment
+   *   Environment this key should be removed from, e.g.
+   *   `users/me/environments/default`.
+   * @param {string} request.key
+   *   Key that should be removed from the environment.
+   * @param {object} [options]
+   *   Call options. See {@link https://googleapis.dev/nodejs/google-gax/latest/interfaces/CallOptions.html|CallOptions} for more details.
+   * @returns {Promise} - The promise which resolves to an array.
+   *   The first element of the array is an object representing
+   *   a long running operation. Its `promise()` method returns a promise
+   *   you can `await` for.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/cloud_shell_service.remove_public_key.js</caption>
+   * region_tag:cloudshell_v1_generated_CloudShellService_RemovePublicKey_async
+   */
   removePublicKey(
-      request?: protos.google.cloud.shell.v1.IRemovePublicKeyRequest,
-      options?: CallOptions):
-      Promise<[
-        LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>,
-        protos.google.longrunning.IOperation|undefined, {}|undefined
-      ]>;
+    request?: protos.google.cloud.shell.v1.IRemovePublicKeyRequest,
+    options?: CallOptions,
+  ): Promise<
+    [
+      LROperation<
+        protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+        protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | undefined,
+      {} | undefined,
+    ]
+  >;
   removePublicKey(
-      request: protos.google.cloud.shell.v1.IRemovePublicKeyRequest,
-      options: CallOptions,
-      callback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IRemovePublicKeyRequest,
+    options: CallOptions,
+    callback: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+        protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   removePublicKey(
-      request: protos.google.cloud.shell.v1.IRemovePublicKeyRequest,
-      callback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>): void;
+    request: protos.google.cloud.shell.v1.IRemovePublicKeyRequest,
+    callback: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+        protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): void;
   removePublicKey(
-      request?: protos.google.cloud.shell.v1.IRemovePublicKeyRequest,
-      optionsOrCallback?: CallOptions|Callback<
-          LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>,
-      callback?: Callback<
-          LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>):
-      Promise<[
-        LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>,
-        protos.google.longrunning.IOperation|undefined, {}|undefined
-      ]>|void {
+    request?: protos.google.cloud.shell.v1.IRemovePublicKeyRequest,
+    optionsOrCallback?:
+      | CallOptions
+      | Callback<
+          LROperation<
+            protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+            protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >,
+    callback?: Callback<
+      LROperation<
+        protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+        protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | null | undefined,
+      {} | null | undefined
+    >,
+  ): Promise<
+    [
+      LROperation<
+        protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+        protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+      >,
+      protos.google.longrunning.IOperation | undefined,
+      {} | undefined,
+    ]
+  > | void {
     request = request || {};
     let options: CallOptions;
     if (typeof optionsOrCallback === 'function' && callback === undefined) {
       callback = optionsOrCallback;
       options = {};
-    }
-    else {
+    } else {
       options = optionsOrCallback as CallOptions;
     }
     options = options || {};
     options.otherArgs = options.otherArgs || {};
     options.otherArgs.headers = options.otherArgs.headers || {};
-    options.otherArgs.headers[
-      'x-goog-request-params'
-    ] = this._gaxModule.routingHeader.fromParams({
-      'environment': request.environment ?? '',
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        environment: request.environment ?? '',
+      });
+    this.initialize().catch((err) => {
+      throw err;
     });
-    this.initialize().catch(err => {throw err});
-    const wrappedCallback: Callback<
-          LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>,
-          protos.google.longrunning.IOperation|null|undefined,
-          {}|null|undefined>|undefined = callback
+    const wrappedCallback:
+      | Callback<
+          LROperation<
+            protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+            protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+          >,
+          protos.google.longrunning.IOperation | null | undefined,
+          {} | null | undefined
+        >
+      | undefined = callback
       ? (error, response, rawResponse, _) => {
           this._log.info('removePublicKey response %j', rawResponse);
           callback!(error, response, rawResponse, _); // We verified callback above.
         }
       : undefined;
     this._log.info('removePublicKey request %j', request);
-    return this.innerApiCalls.removePublicKey(request, options, wrappedCallback)
-    ?.then(([response, rawResponse, _]: [
-      LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>,
-      protos.google.longrunning.IOperation|undefined, {}|undefined
-    ]) => {
-      this._log.info('removePublicKey response %j', rawResponse);
-      return [response, rawResponse, _];
-    });
+    return this.innerApiCalls
+      .removePublicKey(request, options, wrappedCallback)
+      ?.then(
+        ([response, rawResponse, _]: [
+          LROperation<
+            protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+            protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+          >,
+          protos.google.longrunning.IOperation | undefined,
+          {} | undefined,
+        ]) => {
+          this._log.info('removePublicKey response %j', rawResponse);
+          return [response, rawResponse, _];
+        },
+      );
   }
-/**
- * Check the status of the long running operation returned by `removePublicKey()`.
- * @param {String} name
- *   The operation name that will be passed.
- * @returns {Promise} - The promise which resolves to an object.
- *   The decoded operation object has result and metadata field to get information from.
- *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
- *   for more details and examples.
- * @example <caption>include:samples/generated/v1/cloud_shell_service.remove_public_key.js</caption>
- * region_tag:cloudshell_v1_generated_CloudShellService_RemovePublicKey_async
- */
-  async checkRemovePublicKeyProgress(name: string): Promise<LROperation<protos.google.cloud.shell.v1.RemovePublicKeyResponse, protos.google.cloud.shell.v1.RemovePublicKeyMetadata>>{
+  /**
+   * Check the status of the long running operation returned by `removePublicKey()`.
+   * @param {String} name
+   *   The operation name that will be passed.
+   * @returns {Promise} - The promise which resolves to an object.
+   *   The decoded operation object has result and metadata field to get information from.
+   *   Please see the {@link https://github.com/googleapis/gax-nodejs/blob/master/client-libraries.md#long-running-operations | documentation }
+   *   for more details and examples.
+   * @example <caption>include:samples/generated/v1/cloud_shell_service.remove_public_key.js</caption>
+   * region_tag:cloudshell_v1_generated_CloudShellService_RemovePublicKey_async
+   */
+  async checkRemovePublicKeyProgress(
+    name: string,
+  ): Promise<
+    LROperation<
+      protos.google.cloud.shell.v1.RemovePublicKeyResponse,
+      protos.google.cloud.shell.v1.RemovePublicKeyMetadata
+    >
+  > {
     this._log.info('removePublicKey long-running');
-    const request = new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest({name});
+    const request =
+      new this._gaxModule.operationsProtos.google.longrunning.GetOperationRequest(
+        { name },
+      );
     const [operation] = await this.operationsClient.getOperation(request);
-    const decodeOperation = new this._gaxModule.Operation(operation, this.descriptors.longrunning.removePublicKey, this._gaxModule.createDefaultBackoffSettings());
-    return decodeOperation as LROperation<protos.google.cloud.shell.v1.RemovePublicKeyResponse, protos.google.cloud.shell.v1.RemovePublicKeyMetadata>;
+    const decodeOperation = new this._gaxModule.Operation(
+      operation,
+      this.descriptors.longrunning.removePublicKey,
+      this._gaxModule.createDefaultBackoffSettings(),
+    );
+    return decodeOperation as LROperation<
+      protos.google.cloud.shell.v1.RemovePublicKeyResponse,
+      protos.google.cloud.shell.v1.RemovePublicKeyMetadata
+    >;
   }
-/**
+  /**
    * Gets the latest state of a long-running operation.  Clients can use this
    * method to poll the operation result at intervals as recommended by the API
    * service.
@@ -993,22 +1337,22 @@ export class CloudShellServiceClient {
       protos.google.longrunning.Operation,
       protos.google.longrunning.GetOperationRequest,
       {} | null | undefined
-    >
+    >,
   ): Promise<[protos.google.longrunning.Operation]> {
-     let options: gax.CallOptions;
-     if (typeof optionsOrCallback === 'function' && callback === undefined) {
-       callback = optionsOrCallback;
-       options = {};
-     } else {
-       options = optionsOrCallback as gax.CallOptions;
-     }
-     options = options || {};
-     options.otherArgs = options.otherArgs || {};
-     options.otherArgs.headers = options.otherArgs.headers || {};
-     options.otherArgs.headers['x-goog-request-params'] =
-       this._gaxModule.routingHeader.fromParams({
-         name: request.name ?? '',
-       });
+    let options: gax.CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    } else {
+      options = optionsOrCallback as gax.CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.getOperation(request, options, callback);
   }
   /**
@@ -1043,15 +1387,15 @@ export class CloudShellServiceClient {
    */
   listOperationsAsync(
     request: protos.google.longrunning.ListOperationsRequest,
-    options?: gax.CallOptions
+    options?: gax.CallOptions,
   ): AsyncIterable<protos.google.longrunning.IOperation> {
-     options = options || {};
-     options.otherArgs = options.otherArgs || {};
-     options.otherArgs.headers = options.otherArgs.headers || {};
-     options.otherArgs.headers['x-goog-request-params'] =
-       this._gaxModule.routingHeader.fromParams({
-         name: request.name ?? '',
-       });
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.listOperationsAsync(request, options);
   }
   /**
@@ -1085,7 +1429,7 @@ export class CloudShellServiceClient {
    * await client.cancelOperation({name: ''});
    * ```
    */
-   cancelOperation(
+  cancelOperation(
     request: protos.google.longrunning.CancelOperationRequest,
     optionsOrCallback?:
       | gax.CallOptions
@@ -1098,25 +1442,24 @@ export class CloudShellServiceClient {
       protos.google.longrunning.CancelOperationRequest,
       protos.google.protobuf.Empty,
       {} | undefined | null
-    >
+    >,
   ): Promise<protos.google.protobuf.Empty> {
-     let options: gax.CallOptions;
-     if (typeof optionsOrCallback === 'function' && callback === undefined) {
-       callback = optionsOrCallback;
-       options = {};
-     } else {
-       options = optionsOrCallback as gax.CallOptions;
-     }
-     options = options || {};
-     options.otherArgs = options.otherArgs || {};
-     options.otherArgs.headers = options.otherArgs.headers || {};
-     options.otherArgs.headers['x-goog-request-params'] =
-       this._gaxModule.routingHeader.fromParams({
-         name: request.name ?? '',
-       });
+    let options: gax.CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    } else {
+      options = optionsOrCallback as gax.CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.cancelOperation(request, options, callback);
   }
-
   /**
    * Deletes a long-running operation. This method indicates that the client is
    * no longer interested in the operation result. It does not cancel the
@@ -1155,22 +1498,22 @@ export class CloudShellServiceClient {
       protos.google.protobuf.Empty,
       protos.google.longrunning.DeleteOperationRequest,
       {} | null | undefined
-    >
+    >,
   ): Promise<protos.google.protobuf.Empty> {
-     let options: gax.CallOptions;
-     if (typeof optionsOrCallback === 'function' && callback === undefined) {
-       callback = optionsOrCallback;
-       options = {};
-     } else {
-       options = optionsOrCallback as gax.CallOptions;
-     }
-     options = options || {};
-     options.otherArgs = options.otherArgs || {};
-     options.otherArgs.headers = options.otherArgs.headers || {};
-     options.otherArgs.headers['x-goog-request-params'] =
-       this._gaxModule.routingHeader.fromParams({
-         name: request.name ?? '',
-       });
+    let options: gax.CallOptions;
+    if (typeof optionsOrCallback === 'function' && callback === undefined) {
+      callback = optionsOrCallback;
+      options = {};
+    } else {
+      options = optionsOrCallback as gax.CallOptions;
+    }
+    options = options || {};
+    options.otherArgs = options.otherArgs || {};
+    options.otherArgs.headers = options.otherArgs.headers || {};
+    options.otherArgs.headers['x-goog-request-params'] =
+      this._gaxModule.routingHeader.fromParams({
+        name: request.name ?? '',
+      });
     return this.operationsClient.deleteOperation(request, options, callback);
   }
 
@@ -1185,7 +1528,7 @@ export class CloudShellServiceClient {
    * @param {string} environment
    * @returns {string} Resource name string.
    */
-  environmentPath(user:string,environment:string) {
+  environmentPath(user: string, environment: string) {
     return this.pathTemplates.environmentPathTemplate.render({
       user: user,
       environment: environment,
@@ -1200,7 +1543,8 @@ export class CloudShellServiceClient {
    * @returns {string} A string representing the user.
    */
   matchUserFromEnvironmentName(environmentName: string) {
-    return this.pathTemplates.environmentPathTemplate.match(environmentName).user;
+    return this.pathTemplates.environmentPathTemplate.match(environmentName)
+      .user;
   }
 
   /**
@@ -1211,7 +1555,8 @@ export class CloudShellServiceClient {
    * @returns {string} A string representing the environment.
    */
   matchEnvironmentFromEnvironmentName(environmentName: string) {
-    return this.pathTemplates.environmentPathTemplate.match(environmentName).environment;
+    return this.pathTemplates.environmentPathTemplate.match(environmentName)
+      .environment;
   }
 
   /**
@@ -1222,7 +1567,7 @@ export class CloudShellServiceClient {
    */
   close(): Promise<void> {
     if (this.cloudShellServiceStub && !this._terminated) {
-      return this.cloudShellServiceStub.then(stub => {
+      return this.cloudShellServiceStub.then((stub) => {
         this._log.info('ending gRPC channel');
         this._terminated = true;
         stub.close();
@@ -1231,4 +1576,4 @@ export class CloudShellServiceClient {
     }
     return Promise.resolve();
   }
-}
\ No newline at end of file
+}
diff --git a/packages/google-cloud-shell/src/v1/index.ts b/packages/google-cloud-shell/src/v1/index.ts
index ca39f06531c9..b042882397d2 100644
--- a/packages/google-cloud-shell/src/v1/index.ts
+++ b/packages/google-cloud-shell/src/v1/index.ts
@@ -16,4 +16,4 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-export {CloudShellServiceClient} from './cloud_shell_service_client';
+export { CloudShellServiceClient } from './cloud_shell_service_client';
diff --git a/packages/google-cloud-shell/system-test/fixtures/sample/src/index.ts b/packages/google-cloud-shell/system-test/fixtures/sample/src/index.ts
index 802abedfe3b9..958c426ff0e3 100644
--- a/packages/google-cloud-shell/system-test/fixtures/sample/src/index.ts
+++ b/packages/google-cloud-shell/system-test/fixtures/sample/src/index.ts
@@ -16,7 +16,7 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-import {CloudShellServiceClient} from '@google-cloud/shell';
+import { CloudShellServiceClient } from '@google-cloud/shell';
 
 // check that the client class type name can be used
 function doStuffWithCloudShellServiceClient(client: CloudShellServiceClient) {
diff --git a/packages/google-cloud-shell/system-test/install.ts b/packages/google-cloud-shell/system-test/install.ts
index f66069aa3940..ccf167042d2e 100644
--- a/packages/google-cloud-shell/system-test/install.ts
+++ b/packages/google-cloud-shell/system-test/install.ts
@@ -16,34 +16,36 @@
 // ** https://github.com/googleapis/gapic-generator-typescript **
 // ** All changes to this file may be overwritten. **
 
-import {packNTest} from 'pack-n-play';
-import {readFileSync} from 'fs';
-import {describe, it} from 'mocha';
+import { packNTest } from 'pack-n-play';
+import { readFileSync } from 'fs';
+import { describe, it } from 'mocha';
 
 describe('📦 pack-n-play test', () => {
-
-  it('TypeScript code', async function() {
+  it('TypeScript code', async function () {
     this.timeout(300000);
     const options = {
       packageDir: process.cwd(),
       sample: {
         description: 'TypeScript user can use the type definitions',
-        ts: readFileSync('./system-test/fixtures/sample/src/index.ts').toString()
-      }
+        ts: readFileSync(
+          './system-test/fixtures/sample/src/index.ts',
+        ).toString(),
+      },
     };
     await packNTest(options);
   });
 
-  it('JavaScript code', async function() {
+  it('JavaScript code', async function () {
     this.timeout(300000);
     const options = {
       packageDir: process.cwd(),
       sample: {
         description: 'JavaScript user can use the library',
-        cjs: readFileSync('./system-test/fixtures/sample/src/index.js').toString()
-      }
+        cjs: readFileSync(
+          './system-test/fixtures/sample/src/index.js',
+        ).toString(),
+      },
     };
     await packNTest(options);
   });
-
 });
diff --git a/packages/google-cloud-shell/test/gapic_cloud_shell_service_v1.ts b/packages/google-cloud-shell/test/gapic_cloud_shell_service_v1.ts
index 16025b637272..28c660ccd0b8 100644
--- a/packages/google-cloud-shell/test/gapic_cloud_shell_service_v1.ts
+++ b/packages/google-cloud-shell/test/gapic_cloud_shell_service_v1.ts
@@ -19,1252 +19,1564 @@
 import * as protos from '../protos/protos';
 import * as assert from 'assert';
 import * as sinon from 'sinon';
-import {SinonStub} from 'sinon';
-import {describe, it} from 'mocha';
+import { SinonStub } from 'sinon';
+import { describe, it } from 'mocha';
 import * as cloudshellserviceModule from '../src';
 
-import {protobuf, LROperation, operationsProtos} from 'google-gax';
+import { protobuf, LROperation, operationsProtos } from 'google-gax';
 
 // Dynamically loaded proto JSON is needed to get the type information
 // to fill in default values for request objects
-const root = protobuf.Root.fromJSON(require('../protos/protos.json')).resolveAll();
+const root = protobuf.Root.fromJSON(
+  require('../protos/protos.json'),
+).resolveAll();
 
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
 function getTypeDefaultValue(typeName: string, fields: string[]) {
-    let type = root.lookupType(typeName) as protobuf.Type;
-    for (const field of fields.slice(0, -1)) {
-        type = type.fields[field]?.resolvedType as protobuf.Type;
-    }
-    return type.fields[fields[fields.length - 1]]?.defaultValue;
+  let type = root.lookupType(typeName) as protobuf.Type;
+  for (const field of fields.slice(0, -1)) {
+    type = type.fields[field]?.resolvedType as protobuf.Type;
+  }
+  return type.fields[fields[fields.length - 1]]?.defaultValue;
 }
 
 function generateSampleMessage<T extends object>(instance: T) {
-    const filledObject = (instance.constructor as typeof protobuf.Message)
-        .toObject(instance as protobuf.Message<T>, {defaults: true});
-    return (instance.constructor as typeof protobuf.Message).fromObject(filledObject) as T;
+  const filledObject = (
+    instance.constructor as typeof protobuf.Message
+  ).toObject(instance as protobuf.Message<T>, { defaults: true });
+  return (instance.constructor as typeof protobuf.Message).fromObject(
+    filledObject,
+  ) as T;
 }
 
 function stubSimpleCall<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().rejects(error) : sinon.stub().resolves([response]);
+  return error
+    ? sinon.stub().rejects(error)
+    : sinon.stub().resolves([response]);
 }
 
-function stubSimpleCallWithCallback<ResponseType>(response?: ResponseType, error?: Error) {
-    return error ? sinon.stub().callsArgWith(2, error) : sinon.stub().callsArgWith(2, null, response);
+function stubSimpleCallWithCallback<ResponseType>(
+  response?: ResponseType,
+  error?: Error,
+) {
+  return error
+    ? sinon.stub().callsArgWith(2, error)
+    : sinon.stub().callsArgWith(2, null, response);
 }
 
-function stubLongRunningCall<ResponseType>(response?: ResponseType, callError?: Error, lroError?: Error) {
-    const innerStub = lroError ? sinon.stub().rejects(lroError) : sinon.stub().resolves([response]);
-    const mockOperation = {
-        promise: innerStub,
-    };
-    return callError ? sinon.stub().rejects(callError) : sinon.stub().resolves([mockOperation]);
+function stubLongRunningCall<ResponseType>(
+  response?: ResponseType,
+  callError?: Error,
+  lroError?: Error,
+) {
+  const innerStub = lroError
+    ? sinon.stub().rejects(lroError)
+    : sinon.stub().resolves([response]);
+  const mockOperation = {
+    promise: innerStub,
+  };
+  return callError
+    ? sinon.stub().rejects(callError)
+    : sinon.stub().resolves([mockOperation]);
 }
 
-function stubLongRunningCallWithCallback<ResponseType>(response?: ResponseType, callError?: Error, lroError?: Error) {
-    const innerStub = lroError ? sinon.stub().rejects(lroError) : sinon.stub().resolves([response]);
-    const mockOperation = {
-        promise: innerStub,
-    };
-    return callError ? sinon.stub().callsArgWith(2, callError) : sinon.stub().callsArgWith(2, null, mockOperation);
+function stubLongRunningCallWithCallback<ResponseType>(
+  response?: ResponseType,
+  callError?: Error,
+  lroError?: Error,
+) {
+  const innerStub = lroError
+    ? sinon.stub().rejects(lroError)
+    : sinon.stub().resolves([response]);
+  const mockOperation = {
+    promise: innerStub,
+  };
+  return callError
+    ? sinon.stub().callsArgWith(2, callError)
+    : sinon.stub().callsArgWith(2, null, mockOperation);
 }
 
-function stubAsyncIterationCall<ResponseType>(responses?: ResponseType[], error?: Error) {
-    let counter = 0;
-    const asyncIterable = {
-        [Symbol.asyncIterator]() {
-            return {
-                async next() {
-                    if (error) {
-                        return Promise.reject(error);
-                    }
-                    if (counter >= responses!.length) {
-                        return Promise.resolve({done: true, value: undefined});
-                    }
-                    return Promise.resolve({done: false, value: responses![counter++]});
-                }
-            };
-        }
-    };
-    return sinon.stub().returns(asyncIterable);
+function stubAsyncIterationCall<ResponseType>(
+  responses?: ResponseType[],
+  error?: Error,
+) {
+  let counter = 0;
+  const asyncIterable = {
+    [Symbol.asyncIterator]() {
+      return {
+        async next() {
+          if (error) {
+            return Promise.reject(error);
+          }
+          if (counter >= responses!.length) {
+            return Promise.resolve({ done: true, value: undefined });
+          }
+          return Promise.resolve({ done: false, value: responses![counter++] });
+        },
+      };
+    },
+  };
+  return sinon.stub().returns(asyncIterable);
 }
 
 describe('v1.CloudShellServiceClient', () => {
-    describe('Common methods', () => {
-        it('has apiEndpoint', () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient();
-            const apiEndpoint = client.apiEndpoint;
-            assert.strictEqual(apiEndpoint, 'cloudshell.googleapis.com');
-        });
-
-        it('has universeDomain', () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient();
-            const universeDomain = client.universeDomain;
-            assert.strictEqual(universeDomain, "googleapis.com");
-        });
-
-        if (typeof process === 'object' && typeof process.emitWarning === 'function') {
-            it('throws DeprecationWarning if static servicePath is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const servicePath = cloudshellserviceModule.v1.CloudShellServiceClient.servicePath;
-                assert.strictEqual(servicePath, 'cloudshell.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-
-            it('throws DeprecationWarning if static apiEndpoint is used', () => {
-                const stub = sinon.stub(process, 'emitWarning');
-                const apiEndpoint = cloudshellserviceModule.v1.CloudShellServiceClient.apiEndpoint;
-                assert.strictEqual(apiEndpoint, 'cloudshell.googleapis.com');
-                assert(stub.called);
-                stub.restore();
-            });
-        }
-        it('sets apiEndpoint according to universe domain camelCase', () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({universeDomain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'cloudshell.example.com');
-        });
-
-        it('sets apiEndpoint according to universe domain snakeCase', () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({universe_domain: 'example.com'});
-            const servicePath = client.apiEndpoint;
-            assert.strictEqual(servicePath, 'cloudshell.example.com');
-        });
+  describe('Common methods', () => {
+    it('has apiEndpoint', () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient();
+      const apiEndpoint = client.apiEndpoint;
+      assert.strictEqual(apiEndpoint, 'cloudshell.googleapis.com');
+    });
 
-        if (typeof process === 'object' && 'env' in process) {
-            describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
-                it('sets apiEndpoint from environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new cloudshellserviceModule.v1.CloudShellServiceClient();
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'cloudshell.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-
-                it('value configured in code has priority over environment variable', () => {
-                    const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
-                    const client = new cloudshellserviceModule.v1.CloudShellServiceClient({universeDomain: 'configured.example.com'});
-                    const servicePath = client.apiEndpoint;
-                    assert.strictEqual(servicePath, 'cloudshell.configured.example.com');
-                    if (saved) {
-                        process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
-                    } else {
-                        delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
-                    }
-                });
-            });
-        }
-        it('does not allow setting both universeDomain and universe_domain', () => {
-            assert.throws(() => { new cloudshellserviceModule.v1.CloudShellServiceClient({universe_domain: 'example.com', universeDomain: 'example.net'}); });
-        });
+    it('has universeDomain', () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient();
+      const universeDomain = client.universeDomain;
+      assert.strictEqual(universeDomain, 'googleapis.com');
+    });
 
-        it('has port', () => {
-            const port = cloudshellserviceModule.v1.CloudShellServiceClient.port;
-            assert(port);
-            assert(typeof port === 'number');
-        });
+    if (
+      typeof process === 'object' &&
+      typeof process.emitWarning === 'function'
+    ) {
+      it('throws DeprecationWarning if static servicePath is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const servicePath =
+          cloudshellserviceModule.v1.CloudShellServiceClient.servicePath;
+        assert.strictEqual(servicePath, 'cloudshell.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+
+      it('throws DeprecationWarning if static apiEndpoint is used', () => {
+        const stub = sinon.stub(process, 'emitWarning');
+        const apiEndpoint =
+          cloudshellserviceModule.v1.CloudShellServiceClient.apiEndpoint;
+        assert.strictEqual(apiEndpoint, 'cloudshell.googleapis.com');
+        assert(stub.called);
+        stub.restore();
+      });
+    }
+    it('sets apiEndpoint according to universe domain camelCase', () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        universeDomain: 'example.com',
+      });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'cloudshell.example.com');
+    });
 
-        it('should create a client with no option', () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient();
-            assert(client);
-        });
+    it('sets apiEndpoint according to universe domain snakeCase', () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        universe_domain: 'example.com',
+      });
+      const servicePath = client.apiEndpoint;
+      assert.strictEqual(servicePath, 'cloudshell.example.com');
+    });
 
-        it('should create a client with gRPC fallback', () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-                fallback: true,
-            });
-            assert(client);
+    if (typeof process === 'object' && 'env' in process) {
+      describe('GOOGLE_CLOUD_UNIVERSE_DOMAIN environment variable', () => {
+        it('sets apiEndpoint from environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client =
+            new cloudshellserviceModule.v1.CloudShellServiceClient();
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(servicePath, 'cloudshell.example.com');
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
         });
 
-        it('has initialize method and supports deferred initialization', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.cloudShellServiceStub, undefined);
-            await client.initialize();
-            assert(client.cloudShellServiceStub);
+        it('value configured in code has priority over environment variable', () => {
+          const saved = process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = 'example.com';
+          const client = new cloudshellserviceModule.v1.CloudShellServiceClient(
+            { universeDomain: 'configured.example.com' },
+          );
+          const servicePath = client.apiEndpoint;
+          assert.strictEqual(servicePath, 'cloudshell.configured.example.com');
+          if (saved) {
+            process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'] = saved;
+          } else {
+            delete process.env['GOOGLE_CLOUD_UNIVERSE_DOMAIN'];
+          }
         });
-
-        it('has close method for the initialized client', done => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.initialize().catch(err => {throw err});
-            assert(client.cloudShellServiceStub);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
+      });
+    }
+    it('does not allow setting both universeDomain and universe_domain', () => {
+      assert.throws(() => {
+        new cloudshellserviceModule.v1.CloudShellServiceClient({
+          universe_domain: 'example.com',
+          universeDomain: 'example.net',
         });
+      });
+    });
 
-        it('has close method for the non-initialized client', done => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            assert.strictEqual(client.cloudShellServiceStub, undefined);
-            client.close().then(() => {
-                done();
-            }).catch(err => {throw err});
-        });
+    it('has port', () => {
+      const port = cloudshellserviceModule.v1.CloudShellServiceClient.port;
+      assert(port);
+      assert(typeof port === 'number');
+    });
 
-        it('has getProjectId method', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
-            const result = await client.getProjectId();
-            assert.strictEqual(result, fakeProjectId);
-            assert((client.auth.getProjectId as SinonStub).calledWithExactly());
-        });
+    it('should create a client with no option', () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient();
+      assert(client);
+    });
 
-        it('has getProjectId method with callback', async () => {
-            const fakeProjectId = 'fake-project-id';
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            client.auth.getProjectId = sinon.stub().callsArgWith(0, null, fakeProjectId);
-            const promise = new Promise((resolve, reject) => {
-                client.getProjectId((err?: Error|null, projectId?: string|null) => {
-                    if (err) {
-                        reject(err);
-                    } else {
-                        resolve(projectId);
-                    }
-                });
-            });
-            const result = await promise;
-            assert.strictEqual(result, fakeProjectId);
-        });
+    it('should create a client with gRPC fallback', () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        fallback: true,
+      });
+      assert(client);
     });
 
-    describe('getEnvironment', () => {
-        it('invokes getEnvironment without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.GetEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.GetEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.shell.v1.Environment()
-            );
-            client.innerApiCalls.getEnvironment = stubSimpleCall(expectedResponse);
-            const [response] = await client.getEnvironment(request);
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('has initialize method and supports deferred initialization', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      assert.strictEqual(client.cloudShellServiceStub, undefined);
+      await client.initialize();
+      assert(client.cloudShellServiceStub);
+    });
 
-        it('invokes getEnvironment without error using callback', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.GetEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.GetEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.cloud.shell.v1.Environment()
-            );
-            client.innerApiCalls.getEnvironment = stubSimpleCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.getEnvironment(
-                    request,
-                    (err?: Error|null, result?: protos.google.cloud.shell.v1.IEnvironment|null) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.getEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('has close method for the initialized client', (done) => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.initialize().catch((err) => {
+        throw err;
+      });
+      assert(client.cloudShellServiceStub);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
+    });
 
-        it('invokes getEnvironment with error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.GetEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.GetEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.getEnvironment = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.getEnvironment(request), expectedError);
-            const actualRequest = (client.innerApiCalls.getEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.getEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('has close method for the non-initialized client', (done) => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      assert.strictEqual(client.cloudShellServiceStub, undefined);
+      client
+        .close()
+        .then(() => {
+          done();
+        })
+        .catch((err) => {
+          throw err;
         });
+    });
 
-        it('invokes getEnvironment with closed client', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.GetEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.GetEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedError = new Error('The client has already been closed.');
-            client.close().catch(err => {throw err});
-            await assert.rejects(client.getEnvironment(request), expectedError);
-        });
+    it('has getProjectId method', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.auth.getProjectId = sinon.stub().resolves(fakeProjectId);
+      const result = await client.getProjectId();
+      assert.strictEqual(result, fakeProjectId);
+      assert((client.auth.getProjectId as SinonStub).calledWithExactly());
     });
 
-    describe('startEnvironment', () => {
-        it('invokes startEnvironment without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.StartEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.StartEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.longrunning.Operation()
-            );
-            client.innerApiCalls.startEnvironment = stubLongRunningCall(expectedResponse);
-            const [operation] = await client.startEnvironment(request);
-            const [response] = await operation.promise();
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.startEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.startEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    it('has getProjectId method with callback', async () => {
+      const fakeProjectId = 'fake-project-id';
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      client.auth.getProjectId = sinon
+        .stub()
+        .callsArgWith(0, null, fakeProjectId);
+      const promise = new Promise((resolve, reject) => {
+        client.getProjectId((err?: Error | null, projectId?: string | null) => {
+          if (err) {
+            reject(err);
+          } else {
+            resolve(projectId);
+          }
         });
+      });
+      const result = await promise;
+      assert.strictEqual(result, fakeProjectId);
+    });
+  });
+
+  describe('getEnvironment', () => {
+    it('invokes getEnvironment without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.GetEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.GetEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.shell.v1.Environment(),
+      );
+      client.innerApiCalls.getEnvironment = stubSimpleCall(expectedResponse);
+      const [response] = await client.getEnvironment(request);
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes startEnvironment without error using callback', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.StartEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.StartEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.longrunning.Operation()
-            );
-            client.innerApiCalls.startEnvironment = stubLongRunningCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.startEnvironment(
-                    request,
-                    (err?: Error|null,
-                     result?: LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>|null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const operation = await promise as LROperation<protos.google.cloud.shell.v1.IStartEnvironmentResponse, protos.google.cloud.shell.v1.IStartEnvironmentMetadata>;
-            const [response] = await operation.promise();
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.startEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.startEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getEnvironment without error using callback', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.GetEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.GetEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.cloud.shell.v1.Environment(),
+      );
+      client.innerApiCalls.getEnvironment =
+        stubSimpleCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.getEnvironment(
+          request,
+          (
+            err?: Error | null,
+            result?: protos.google.cloud.shell.v1.IEnvironment | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.getEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes startEnvironment with call error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.StartEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.StartEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.startEnvironment = stubLongRunningCall(undefined, expectedError);
-            await assert.rejects(client.startEnvironment(request), expectedError);
-            const actualRequest = (client.innerApiCalls.startEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.startEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getEnvironment with error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.GetEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.GetEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.getEnvironment = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.getEnvironment(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.getEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.getEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes startEnvironment with LRO error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.StartEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.StartEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.startEnvironment = stubLongRunningCall(undefined, undefined, expectedError);
-            const [operation] = await client.startEnvironment(request);
-            await assert.rejects(operation.promise(), expectedError);
-            const actualRequest = (client.innerApiCalls.startEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.startEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes getEnvironment with closed client', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.GetEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.GetEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedError = new Error('The client has already been closed.');
+      client.close().catch((err) => {
+        throw err;
+      });
+      await assert.rejects(client.getEnvironment(request), expectedError);
+    });
+  });
+
+  describe('startEnvironment', () => {
+    it('invokes startEnvironment without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.StartEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.StartEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.longrunning.Operation(),
+      );
+      client.innerApiCalls.startEnvironment =
+        stubLongRunningCall(expectedResponse);
+      const [operation] = await client.startEnvironment(request);
+      const [response] = await operation.promise();
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.startEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.startEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes checkStartEnvironmentProgress without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const expectedResponse = generateSampleMessage(
-              new operationsProtos.google.longrunning.Operation()
-            );
-            expectedResponse.name = 'test';
-            expectedResponse.response = {type_url: 'url', value: Buffer.from('')};
-            expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')}
-
-            client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
-            const decodedOperation = await client.checkStartEnvironmentProgress(expectedResponse.name);
-            assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
-            assert(decodedOperation.metadata);
-            assert((client.operationsClient.getOperation as SinonStub).getCall(0));
-        });
+    it('invokes startEnvironment without error using callback', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.StartEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.StartEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.longrunning.Operation(),
+      );
+      client.innerApiCalls.startEnvironment =
+        stubLongRunningCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.startEnvironment(
+          request,
+          (
+            err?: Error | null,
+            result?: LROperation<
+              protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+              protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+            > | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const operation = (await promise) as LROperation<
+        protos.google.cloud.shell.v1.IStartEnvironmentResponse,
+        protos.google.cloud.shell.v1.IStartEnvironmentMetadata
+      >;
+      const [response] = await operation.promise();
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.startEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.startEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes checkStartEnvironmentProgress with error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const expectedError = new Error('expected');
-
-            client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.checkStartEnvironmentProgress(''), expectedError);
-            assert((client.operationsClient.getOperation as SinonStub)
-                .getCall(0));
-        });
+    it('invokes startEnvironment with call error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.StartEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.StartEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.startEnvironment = stubLongRunningCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.startEnvironment(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.startEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.startEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('authorizeEnvironment', () => {
-        it('invokes authorizeEnvironment without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.AuthorizeEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.AuthorizeEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.longrunning.Operation()
-            );
-            client.innerApiCalls.authorizeEnvironment = stubLongRunningCall(expectedResponse);
-            const [operation] = await client.authorizeEnvironment(request);
-            const [response] = await operation.promise();
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.authorizeEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.authorizeEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes startEnvironment with LRO error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.StartEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.StartEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.startEnvironment = stubLongRunningCall(
+        undefined,
+        undefined,
+        expectedError,
+      );
+      const [operation] = await client.startEnvironment(request);
+      await assert.rejects(operation.promise(), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.startEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.startEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes authorizeEnvironment without error using callback', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.AuthorizeEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.AuthorizeEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.longrunning.Operation()
-            );
-            client.innerApiCalls.authorizeEnvironment = stubLongRunningCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.authorizeEnvironment(
-                    request,
-                    (err?: Error|null,
-                     result?: LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>|null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const operation = await promise as LROperation<protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse, protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata>;
-            const [response] = await operation.promise();
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.authorizeEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.authorizeEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes checkStartEnvironmentProgress without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const expectedResponse = generateSampleMessage(
+        new operationsProtos.google.longrunning.Operation(),
+      );
+      expectedResponse.name = 'test';
+      expectedResponse.response = { type_url: 'url', value: Buffer.from('') };
+      expectedResponse.metadata = { type_url: 'url', value: Buffer.from('') };
+
+      client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
+      const decodedOperation = await client.checkStartEnvironmentProgress(
+        expectedResponse.name,
+      );
+      assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
+      assert(decodedOperation.metadata);
+      assert((client.operationsClient.getOperation as SinonStub).getCall(0));
+    });
 
-        it('invokes authorizeEnvironment with call error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.AuthorizeEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.AuthorizeEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.authorizeEnvironment = stubLongRunningCall(undefined, expectedError);
-            await assert.rejects(client.authorizeEnvironment(request), expectedError);
-            const actualRequest = (client.innerApiCalls.authorizeEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.authorizeEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes checkStartEnvironmentProgress with error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const expectedError = new Error('expected');
+
+      client.operationsClient.getOperation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.checkStartEnvironmentProgress(''),
+        expectedError,
+      );
+      assert((client.operationsClient.getOperation as SinonStub).getCall(0));
+    });
+  });
+
+  describe('authorizeEnvironment', () => {
+    it('invokes authorizeEnvironment without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.AuthorizeEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.AuthorizeEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.longrunning.Operation(),
+      );
+      client.innerApiCalls.authorizeEnvironment =
+        stubLongRunningCall(expectedResponse);
+      const [operation] = await client.authorizeEnvironment(request);
+      const [response] = await operation.promise();
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.authorizeEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.authorizeEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes authorizeEnvironment with LRO error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.AuthorizeEnvironmentRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.AuthorizeEnvironmentRequest', ['name']);
-            request.name = defaultValue1;
-            const expectedHeaderRequestParams = `name=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.authorizeEnvironment = stubLongRunningCall(undefined, undefined, expectedError);
-            const [operation] = await client.authorizeEnvironment(request);
-            await assert.rejects(operation.promise(), expectedError);
-            const actualRequest = (client.innerApiCalls.authorizeEnvironment as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.authorizeEnvironment as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes authorizeEnvironment without error using callback', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.AuthorizeEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.AuthorizeEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.longrunning.Operation(),
+      );
+      client.innerApiCalls.authorizeEnvironment =
+        stubLongRunningCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.authorizeEnvironment(
+          request,
+          (
+            err?: Error | null,
+            result?: LROperation<
+              protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+              protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+            > | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const operation = (await promise) as LROperation<
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentResponse,
+        protos.google.cloud.shell.v1.IAuthorizeEnvironmentMetadata
+      >;
+      const [response] = await operation.promise();
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.authorizeEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.authorizeEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes checkAuthorizeEnvironmentProgress without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const expectedResponse = generateSampleMessage(
-              new operationsProtos.google.longrunning.Operation()
-            );
-            expectedResponse.name = 'test';
-            expectedResponse.response = {type_url: 'url', value: Buffer.from('')};
-            expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')}
-
-            client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
-            const decodedOperation = await client.checkAuthorizeEnvironmentProgress(expectedResponse.name);
-            assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
-            assert(decodedOperation.metadata);
-            assert((client.operationsClient.getOperation as SinonStub).getCall(0));
-        });
+    it('invokes authorizeEnvironment with call error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.AuthorizeEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.AuthorizeEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.authorizeEnvironment = stubLongRunningCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.authorizeEnvironment(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.authorizeEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.authorizeEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes checkAuthorizeEnvironmentProgress with error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const expectedError = new Error('expected');
-
-            client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.checkAuthorizeEnvironmentProgress(''), expectedError);
-            assert((client.operationsClient.getOperation as SinonStub)
-                .getCall(0));
-        });
+    it('invokes authorizeEnvironment with LRO error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.AuthorizeEnvironmentRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.AuthorizeEnvironmentRequest',
+        ['name'],
+      );
+      request.name = defaultValue1;
+      const expectedHeaderRequestParams = `name=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.authorizeEnvironment = stubLongRunningCall(
+        undefined,
+        undefined,
+        expectedError,
+      );
+      const [operation] = await client.authorizeEnvironment(request);
+      await assert.rejects(operation.promise(), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.authorizeEnvironment as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.authorizeEnvironment as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
     });
 
-    describe('addPublicKey', () => {
-        it('invokes addPublicKey without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.AddPublicKeyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.AddPublicKeyRequest', ['environment']);
-            request.environment = defaultValue1;
-            const expectedHeaderRequestParams = `environment=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.longrunning.Operation()
-            );
-            client.innerApiCalls.addPublicKey = stubLongRunningCall(expectedResponse);
-            const [operation] = await client.addPublicKey(request);
-            const [response] = await operation.promise();
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.addPublicKey as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.addPublicKey as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes checkAuthorizeEnvironmentProgress without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const expectedResponse = generateSampleMessage(
+        new operationsProtos.google.longrunning.Operation(),
+      );
+      expectedResponse.name = 'test';
+      expectedResponse.response = { type_url: 'url', value: Buffer.from('') };
+      expectedResponse.metadata = { type_url: 'url', value: Buffer.from('') };
+
+      client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
+      const decodedOperation = await client.checkAuthorizeEnvironmentProgress(
+        expectedResponse.name,
+      );
+      assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
+      assert(decodedOperation.metadata);
+      assert((client.operationsClient.getOperation as SinonStub).getCall(0));
+    });
 
-        it('invokes addPublicKey without error using callback', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.AddPublicKeyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.AddPublicKeyRequest', ['environment']);
-            request.environment = defaultValue1;
-            const expectedHeaderRequestParams = `environment=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.longrunning.Operation()
-            );
-            client.innerApiCalls.addPublicKey = stubLongRunningCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.addPublicKey(
-                    request,
-                    (err?: Error|null,
-                     result?: LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>|null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const operation = await promise as LROperation<protos.google.cloud.shell.v1.IAddPublicKeyResponse, protos.google.cloud.shell.v1.IAddPublicKeyMetadata>;
-            const [response] = await operation.promise();
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.addPublicKey as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.addPublicKey as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes checkAuthorizeEnvironmentProgress with error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const expectedError = new Error('expected');
+
+      client.operationsClient.getOperation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.checkAuthorizeEnvironmentProgress(''),
+        expectedError,
+      );
+      assert((client.operationsClient.getOperation as SinonStub).getCall(0));
+    });
+  });
+
+  describe('addPublicKey', () => {
+    it('invokes addPublicKey without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.AddPublicKeyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.AddPublicKeyRequest',
+        ['environment'],
+      );
+      request.environment = defaultValue1;
+      const expectedHeaderRequestParams = `environment=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.longrunning.Operation(),
+      );
+      client.innerApiCalls.addPublicKey = stubLongRunningCall(expectedResponse);
+      const [operation] = await client.addPublicKey(request);
+      const [response] = await operation.promise();
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.addPublicKey as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.addPublicKey as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes addPublicKey with call error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.AddPublicKeyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.AddPublicKeyRequest', ['environment']);
-            request.environment = defaultValue1;
-            const expectedHeaderRequestParams = `environment=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.addPublicKey = stubLongRunningCall(undefined, expectedError);
-            await assert.rejects(client.addPublicKey(request), expectedError);
-            const actualRequest = (client.innerApiCalls.addPublicKey as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.addPublicKey as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes addPublicKey without error using callback', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.AddPublicKeyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.AddPublicKeyRequest',
+        ['environment'],
+      );
+      request.environment = defaultValue1;
+      const expectedHeaderRequestParams = `environment=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.longrunning.Operation(),
+      );
+      client.innerApiCalls.addPublicKey =
+        stubLongRunningCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.addPublicKey(
+          request,
+          (
+            err?: Error | null,
+            result?: LROperation<
+              protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+              protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+            > | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const operation = (await promise) as LROperation<
+        protos.google.cloud.shell.v1.IAddPublicKeyResponse,
+        protos.google.cloud.shell.v1.IAddPublicKeyMetadata
+      >;
+      const [response] = await operation.promise();
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.addPublicKey as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.addPublicKey as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes addPublicKey with LRO error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.AddPublicKeyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.AddPublicKeyRequest', ['environment']);
-            request.environment = defaultValue1;
-            const expectedHeaderRequestParams = `environment=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.addPublicKey = stubLongRunningCall(undefined, undefined, expectedError);
-            const [operation] = await client.addPublicKey(request);
-            await assert.rejects(operation.promise(), expectedError);
-            const actualRequest = (client.innerApiCalls.addPublicKey as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.addPublicKey as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes addPublicKey with call error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.AddPublicKeyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.AddPublicKeyRequest',
+        ['environment'],
+      );
+      request.environment = defaultValue1;
+      const expectedHeaderRequestParams = `environment=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.addPublicKey = stubLongRunningCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.addPublicKey(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.addPublicKey as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.addPublicKey as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes checkAddPublicKeyProgress without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const expectedResponse = generateSampleMessage(
-              new operationsProtos.google.longrunning.Operation()
-            );
-            expectedResponse.name = 'test';
-            expectedResponse.response = {type_url: 'url', value: Buffer.from('')};
-            expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')}
-
-            client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
-            const decodedOperation = await client.checkAddPublicKeyProgress(expectedResponse.name);
-            assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
-            assert(decodedOperation.metadata);
-            assert((client.operationsClient.getOperation as SinonStub).getCall(0));
-        });
+    it('invokes addPublicKey with LRO error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.AddPublicKeyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.AddPublicKeyRequest',
+        ['environment'],
+      );
+      request.environment = defaultValue1;
+      const expectedHeaderRequestParams = `environment=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.addPublicKey = stubLongRunningCall(
+        undefined,
+        undefined,
+        expectedError,
+      );
+      const [operation] = await client.addPublicKey(request);
+      await assert.rejects(operation.promise(), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.addPublicKey as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.addPublicKey as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes checkAddPublicKeyProgress with error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const expectedError = new Error('expected');
-
-            client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.checkAddPublicKeyProgress(''), expectedError);
-            assert((client.operationsClient.getOperation as SinonStub)
-                .getCall(0));
-        });
+    it('invokes checkAddPublicKeyProgress without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const expectedResponse = generateSampleMessage(
+        new operationsProtos.google.longrunning.Operation(),
+      );
+      expectedResponse.name = 'test';
+      expectedResponse.response = { type_url: 'url', value: Buffer.from('') };
+      expectedResponse.metadata = { type_url: 'url', value: Buffer.from('') };
+
+      client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
+      const decodedOperation = await client.checkAddPublicKeyProgress(
+        expectedResponse.name,
+      );
+      assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
+      assert(decodedOperation.metadata);
+      assert((client.operationsClient.getOperation as SinonStub).getCall(0));
     });
 
-    describe('removePublicKey', () => {
-        it('invokes removePublicKey without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.RemovePublicKeyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.RemovePublicKeyRequest', ['environment']);
-            request.environment = defaultValue1;
-            const expectedHeaderRequestParams = `environment=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.longrunning.Operation()
-            );
-            client.innerApiCalls.removePublicKey = stubLongRunningCall(expectedResponse);
-            const [operation] = await client.removePublicKey(request);
-            const [response] = await operation.promise();
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.removePublicKey as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.removePublicKey as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes checkAddPublicKeyProgress with error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const expectedError = new Error('expected');
+
+      client.operationsClient.getOperation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.checkAddPublicKeyProgress(''), expectedError);
+      assert((client.operationsClient.getOperation as SinonStub).getCall(0));
+    });
+  });
+
+  describe('removePublicKey', () => {
+    it('invokes removePublicKey without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.RemovePublicKeyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.RemovePublicKeyRequest',
+        ['environment'],
+      );
+      request.environment = defaultValue1;
+      const expectedHeaderRequestParams = `environment=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.longrunning.Operation(),
+      );
+      client.innerApiCalls.removePublicKey =
+        stubLongRunningCall(expectedResponse);
+      const [operation] = await client.removePublicKey(request);
+      const [response] = await operation.promise();
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.removePublicKey as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.removePublicKey as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes removePublicKey without error using callback', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.RemovePublicKeyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.RemovePublicKeyRequest', ['environment']);
-            request.environment = defaultValue1;
-            const expectedHeaderRequestParams = `environment=${defaultValue1 ?? '' }`;
-            const expectedResponse = generateSampleMessage(
-              new protos.google.longrunning.Operation()
-            );
-            client.innerApiCalls.removePublicKey = stubLongRunningCallWithCallback(expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.removePublicKey(
-                    request,
-                    (err?: Error|null,
-                     result?: LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>|null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    });
-            });
-            const operation = await promise as LROperation<protos.google.cloud.shell.v1.IRemovePublicKeyResponse, protos.google.cloud.shell.v1.IRemovePublicKeyMetadata>;
-            const [response] = await operation.promise();
-            assert.deepStrictEqual(response, expectedResponse);
-            const actualRequest = (client.innerApiCalls.removePublicKey as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.removePublicKey as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes removePublicKey without error using callback', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.RemovePublicKeyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.RemovePublicKeyRequest',
+        ['environment'],
+      );
+      request.environment = defaultValue1;
+      const expectedHeaderRequestParams = `environment=${defaultValue1 ?? ''}`;
+      const expectedResponse = generateSampleMessage(
+        new protos.google.longrunning.Operation(),
+      );
+      client.innerApiCalls.removePublicKey =
+        stubLongRunningCallWithCallback(expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.removePublicKey(
+          request,
+          (
+            err?: Error | null,
+            result?: LROperation<
+              protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+              protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+            > | null,
+          ) => {
+            if (err) {
+              reject(err);
+            } else {
+              resolve(result);
+            }
+          },
+        );
+      });
+      const operation = (await promise) as LROperation<
+        protos.google.cloud.shell.v1.IRemovePublicKeyResponse,
+        protos.google.cloud.shell.v1.IRemovePublicKeyMetadata
+      >;
+      const [response] = await operation.promise();
+      assert.deepStrictEqual(response, expectedResponse);
+      const actualRequest = (
+        client.innerApiCalls.removePublicKey as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.removePublicKey as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes removePublicKey with call error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.RemovePublicKeyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.RemovePublicKeyRequest', ['environment']);
-            request.environment = defaultValue1;
-            const expectedHeaderRequestParams = `environment=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.removePublicKey = stubLongRunningCall(undefined, expectedError);
-            await assert.rejects(client.removePublicKey(request), expectedError);
-            const actualRequest = (client.innerApiCalls.removePublicKey as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.removePublicKey as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes removePublicKey with call error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.RemovePublicKeyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.RemovePublicKeyRequest',
+        ['environment'],
+      );
+      request.environment = defaultValue1;
+      const expectedHeaderRequestParams = `environment=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.removePublicKey = stubLongRunningCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(client.removePublicKey(request), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.removePublicKey as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.removePublicKey as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes removePublicKey with LRO error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new protos.google.cloud.shell.v1.RemovePublicKeyRequest()
-            );
-            const defaultValue1 =
-              getTypeDefaultValue('.google.cloud.shell.v1.RemovePublicKeyRequest', ['environment']);
-            request.environment = defaultValue1;
-            const expectedHeaderRequestParams = `environment=${defaultValue1 ?? '' }`;
-            const expectedError = new Error('expected');
-            client.innerApiCalls.removePublicKey = stubLongRunningCall(undefined, undefined, expectedError);
-            const [operation] = await client.removePublicKey(request);
-            await assert.rejects(operation.promise(), expectedError);
-            const actualRequest = (client.innerApiCalls.removePublicKey as SinonStub)
-                .getCall(0).args[0];
-            assert.deepStrictEqual(actualRequest, request);
-            const actualHeaderRequestParams = (client.innerApiCalls.removePublicKey as SinonStub)
-                .getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
-            assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
-        });
+    it('invokes removePublicKey with LRO error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new protos.google.cloud.shell.v1.RemovePublicKeyRequest(),
+      );
+      const defaultValue1 = getTypeDefaultValue(
+        '.google.cloud.shell.v1.RemovePublicKeyRequest',
+        ['environment'],
+      );
+      request.environment = defaultValue1;
+      const expectedHeaderRequestParams = `environment=${defaultValue1 ?? ''}`;
+      const expectedError = new Error('expected');
+      client.innerApiCalls.removePublicKey = stubLongRunningCall(
+        undefined,
+        undefined,
+        expectedError,
+      );
+      const [operation] = await client.removePublicKey(request);
+      await assert.rejects(operation.promise(), expectedError);
+      const actualRequest = (
+        client.innerApiCalls.removePublicKey as SinonStub
+      ).getCall(0).args[0];
+      assert.deepStrictEqual(actualRequest, request);
+      const actualHeaderRequestParams = (
+        client.innerApiCalls.removePublicKey as SinonStub
+      ).getCall(0).args[1].otherArgs.headers['x-goog-request-params'];
+      assert(actualHeaderRequestParams.includes(expectedHeaderRequestParams));
+    });
 
-        it('invokes checkRemovePublicKeyProgress without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const expectedResponse = generateSampleMessage(
-              new operationsProtos.google.longrunning.Operation()
-            );
-            expectedResponse.name = 'test';
-            expectedResponse.response = {type_url: 'url', value: Buffer.from('')};
-            expectedResponse.metadata = {type_url: 'url', value: Buffer.from('')}
-
-            client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
-            const decodedOperation = await client.checkRemovePublicKeyProgress(expectedResponse.name);
-            assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
-            assert(decodedOperation.metadata);
-            assert((client.operationsClient.getOperation as SinonStub).getCall(0));
-        });
+    it('invokes checkRemovePublicKeyProgress without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const expectedResponse = generateSampleMessage(
+        new operationsProtos.google.longrunning.Operation(),
+      );
+      expectedResponse.name = 'test';
+      expectedResponse.response = { type_url: 'url', value: Buffer.from('') };
+      expectedResponse.metadata = { type_url: 'url', value: Buffer.from('') };
+
+      client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
+      const decodedOperation = await client.checkRemovePublicKeyProgress(
+        expectedResponse.name,
+      );
+      assert.deepStrictEqual(decodedOperation.name, expectedResponse.name);
+      assert(decodedOperation.metadata);
+      assert((client.operationsClient.getOperation as SinonStub).getCall(0));
+    });
 
-        it('invokes checkRemovePublicKeyProgress with error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const expectedError = new Error('expected');
-
-            client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(client.checkRemovePublicKeyProgress(''), expectedError);
-            assert((client.operationsClient.getOperation as SinonStub)
-                .getCall(0));
-        });
+    it('invokes checkRemovePublicKeyProgress with error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const expectedError = new Error('expected');
+
+      client.operationsClient.getOperation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(
+        client.checkRemovePublicKeyProgress(''),
+        expectedError,
+      );
+      assert((client.operationsClient.getOperation as SinonStub).getCall(0));
     });
-    describe('getOperation', () => {
-        it('invokes getOperation without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.GetOperationRequest()
-            );
-            const expectedResponse = generateSampleMessage(
-                new operationsProtos.google.longrunning.Operation()
-            );
-            client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
-            const response = await client.getOperation(request);
-            assert.deepStrictEqual(response, [expectedResponse]);
-            assert((client.operationsClient.getOperation as SinonStub)
-                .getCall(0).calledWith(request)
-            );
-        });
-        it('invokes getOperation without error using callback', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.GetOperationRequest()
-            );
-            const expectedResponse = generateSampleMessage(
-                new operationsProtos.google.longrunning.Operation()
-            );
-            client.operationsClient.getOperation = sinon.stub().callsArgWith(2, null, expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.operationsClient.getOperation(
-                    request,
-                    undefined,
-                    (
-                        err?: Error | null,
-                        result?: operationsProtos.google.longrunning.Operation | null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    }).catch(err => {throw err});
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            assert((client.operationsClient.getOperation as SinonStub)
-                .getCall(0));
-        });
-        it('invokes getOperation with error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.GetOperationRequest()
-            );
-            const expectedError = new Error('expected');
-            client.operationsClient.getOperation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(async () => {await client.getOperation(request)}, expectedError);
-            assert((client.operationsClient.getOperation as SinonStub)
-                .getCall(0).calledWith(request));
-        });
+  });
+  describe('getOperation', () => {
+    it('invokes getOperation without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.GetOperationRequest(),
+      );
+      const expectedResponse = generateSampleMessage(
+        new operationsProtos.google.longrunning.Operation(),
+      );
+      client.operationsClient.getOperation = stubSimpleCall(expectedResponse);
+      const response = await client.getOperation(request);
+      assert.deepStrictEqual(response, [expectedResponse]);
+      assert(
+        (client.operationsClient.getOperation as SinonStub)
+          .getCall(0)
+          .calledWith(request),
+      );
     });
-    describe('cancelOperation', () => {
-        it('invokes cancelOperation without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.CancelOperationRequest()
-            );
-            const expectedResponse = generateSampleMessage(
-                new protos.google.protobuf.Empty()
-            );
-            client.operationsClient.cancelOperation = stubSimpleCall(expectedResponse);
-            const response = await client.cancelOperation(request);
-            assert.deepStrictEqual(response, [expectedResponse]);
-            assert((client.operationsClient.cancelOperation as SinonStub)
-                .getCall(0).calledWith(request)
-            );
-        });
-        it('invokes cancelOperation without error using callback', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.CancelOperationRequest()
-            );
-            const expectedResponse = generateSampleMessage(
-                new protos.google.protobuf.Empty()
-            );
-            client.operationsClient.cancelOperation = sinon.stub().callsArgWith(2, null, expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.operationsClient.cancelOperation(
-                    request,
-                    undefined,
-                    (
-                        err?: Error | null,
-                        result?: protos.google.protobuf.Empty | null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    }).catch(err => {throw err});
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            assert((client.operationsClient.cancelOperation as SinonStub)
-                .getCall(0));
-        });
-        it('invokes cancelOperation with error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.CancelOperationRequest()
-            );
-            const expectedError = new Error('expected');
-            client.operationsClient.cancelOperation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(async () => {await client.cancelOperation(request)}, expectedError);
-            assert((client.operationsClient.cancelOperation as SinonStub)
-                .getCall(0).calledWith(request));
-        });
+    it('invokes getOperation without error using callback', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.GetOperationRequest(),
+      );
+      const expectedResponse = generateSampleMessage(
+        new operationsProtos.google.longrunning.Operation(),
+      );
+      client.operationsClient.getOperation = sinon
+        .stub()
+        .callsArgWith(2, null, expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.operationsClient
+          .getOperation(
+            request,
+            undefined,
+            (
+              err?: Error | null,
+              result?: operationsProtos.google.longrunning.Operation | null,
+            ) => {
+              if (err) {
+                reject(err);
+              } else {
+                resolve(result);
+              }
+            },
+          )
+          .catch((err) => {
+            throw err;
+          });
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      assert((client.operationsClient.getOperation as SinonStub).getCall(0));
     });
-    describe('deleteOperation', () => {
-        it('invokes deleteOperation without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.DeleteOperationRequest()
-            );
-            const expectedResponse = generateSampleMessage(
-                new protos.google.protobuf.Empty()
-            );
-            client.operationsClient.deleteOperation = stubSimpleCall(expectedResponse);
-            const response = await client.deleteOperation(request);
-            assert.deepStrictEqual(response, [expectedResponse]);
-            assert((client.operationsClient.deleteOperation as SinonStub)
-                .getCall(0).calledWith(request)
-            );
-        });
-        it('invokes deleteOperation without error using callback', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.DeleteOperationRequest()
-            );
-            const expectedResponse = generateSampleMessage(
-                new protos.google.protobuf.Empty()
-            );
-            client.operationsClient.deleteOperation = sinon.stub().callsArgWith(2, null, expectedResponse);
-            const promise = new Promise((resolve, reject) => {
-                 client.operationsClient.deleteOperation(
-                    request,
-                    undefined,
-                    (
-                        err?: Error | null,
-                        result?: protos.google.protobuf.Empty | null
-                    ) => {
-                        if (err) {
-                            reject(err);
-                        } else {
-                            resolve(result);
-                        }
-                    }).catch(err => {throw err});
-            });
-            const response = await promise;
-            assert.deepStrictEqual(response, expectedResponse);
-            assert((client.operationsClient.deleteOperation as SinonStub)
-                .getCall(0));
-        });
-        it('invokes deleteOperation with error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.DeleteOperationRequest()
-            );
-            const expectedError = new Error('expected');
-            client.operationsClient.deleteOperation = stubSimpleCall(undefined, expectedError);
-            await assert.rejects(async () => {await client.deleteOperation(request)}, expectedError);
-            assert((client.operationsClient.deleteOperation as SinonStub)
-                .getCall(0).calledWith(request));
-        });
+    it('invokes getOperation with error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.GetOperationRequest(),
+      );
+      const expectedError = new Error('expected');
+      client.operationsClient.getOperation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(async () => {
+        await client.getOperation(request);
+      }, expectedError);
+      assert(
+        (client.operationsClient.getOperation as SinonStub)
+          .getCall(0)
+          .calledWith(request),
+      );
     });
-    describe('listOperationsAsync', () => {
-        it('uses async iteration with listOperations without error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-              credentials: {client_email: 'bogus', private_key: 'bogus'},
-              projectId: 'bogus',
-            });
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.ListOperationsRequest()
-            );
-            const expectedResponse = [
-                generateSampleMessage(
-                    new operationsProtos.google.longrunning.ListOperationsResponse()
-                ),
-                generateSampleMessage(
-                    new operationsProtos.google.longrunning.ListOperationsResponse()
-                ),
-                generateSampleMessage(
-                    new operationsProtos.google.longrunning.ListOperationsResponse()
-                ),
-            ];
-            client.operationsClient.descriptor.listOperations.asyncIterate = stubAsyncIterationCall(expectedResponse);
-            const responses: operationsProtos.google.longrunning.IOperation[] = [];
-            const iterable = client.operationsClient.listOperationsAsync(request);
-            for await (const resource of iterable) {
-                responses.push(resource!);
-            }
-            assert.deepStrictEqual(responses, expectedResponse);
-            assert.deepStrictEqual(
-                (client.operationsClient.descriptor.listOperations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-        });
-        it('uses async iteration with listOperations with error', async () => {
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            const request = generateSampleMessage(
-              new operationsProtos.google.longrunning.ListOperationsRequest()
-            );
-            const expectedError = new Error('expected');
-            client.operationsClient.descriptor.listOperations.asyncIterate = stubAsyncIterationCall(undefined, expectedError);
-            const iterable = client.operationsClient.listOperationsAsync(request);
-            await assert.rejects(async () => {
-                const responses: operationsProtos.google.longrunning.IOperation[] = [];
-                for await (const resource of iterable) {
-                    responses.push(resource!);
-                }
-            });
-            assert.deepStrictEqual(
-                (client.operationsClient.descriptor.listOperations.asyncIterate as SinonStub)
-                    .getCall(0).args[1], request);
-        });
+  });
+  describe('cancelOperation', () => {
+    it('invokes cancelOperation without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.CancelOperationRequest(),
+      );
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.operationsClient.cancelOperation =
+        stubSimpleCall(expectedResponse);
+      const response = await client.cancelOperation(request);
+      assert.deepStrictEqual(response, [expectedResponse]);
+      assert(
+        (client.operationsClient.cancelOperation as SinonStub)
+          .getCall(0)
+          .calledWith(request),
+      );
     });
-
-    describe('Path templates', () => {
-
-        describe('environment', async () => {
-            const fakePath = "/rendered/path/environment";
-            const expectedParameters = {
-                user: "userValue",
-                environment: "environmentValue",
-            };
-            const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
-                credentials: {client_email: 'bogus', private_key: 'bogus'},
-                projectId: 'bogus',
-            });
-            await client.initialize();
-            client.pathTemplates.environmentPathTemplate.render =
-                sinon.stub().returns(fakePath);
-            client.pathTemplates.environmentPathTemplate.match =
-                sinon.stub().returns(expectedParameters);
-
-            it('environmentPath', () => {
-                const result = client.environmentPath("userValue", "environmentValue");
-                assert.strictEqual(result, fakePath);
-                assert((client.pathTemplates.environmentPathTemplate.render as SinonStub)
-                    .getCall(-1).calledWith(expectedParameters));
-            });
-
-            it('matchUserFromEnvironmentName', () => {
-                const result = client.matchUserFromEnvironmentName(fakePath);
-                assert.strictEqual(result, "userValue");
-                assert((client.pathTemplates.environmentPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-
-            it('matchEnvironmentFromEnvironmentName', () => {
-                const result = client.matchEnvironmentFromEnvironmentName(fakePath);
-                assert.strictEqual(result, "environmentValue");
-                assert((client.pathTemplates.environmentPathTemplate.match as SinonStub)
-                    .getCall(-1).calledWith(fakePath));
-            });
-        });
+    it('invokes cancelOperation without error using callback', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.CancelOperationRequest(),
+      );
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.operationsClient.cancelOperation = sinon
+        .stub()
+        .callsArgWith(2, null, expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.operationsClient
+          .cancelOperation(
+            request,
+            undefined,
+            (
+              err?: Error | null,
+              result?: protos.google.protobuf.Empty | null,
+            ) => {
+              if (err) {
+                reject(err);
+              } else {
+                resolve(result);
+              }
+            },
+          )
+          .catch((err) => {
+            throw err;
+          });
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      assert((client.operationsClient.cancelOperation as SinonStub).getCall(0));
+    });
+    it('invokes cancelOperation with error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.CancelOperationRequest(),
+      );
+      const expectedError = new Error('expected');
+      client.operationsClient.cancelOperation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(async () => {
+        await client.cancelOperation(request);
+      }, expectedError);
+      assert(
+        (client.operationsClient.cancelOperation as SinonStub)
+          .getCall(0)
+          .calledWith(request),
+      );
+    });
+  });
+  describe('deleteOperation', () => {
+    it('invokes deleteOperation without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.DeleteOperationRequest(),
+      );
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.operationsClient.deleteOperation =
+        stubSimpleCall(expectedResponse);
+      const response = await client.deleteOperation(request);
+      assert.deepStrictEqual(response, [expectedResponse]);
+      assert(
+        (client.operationsClient.deleteOperation as SinonStub)
+          .getCall(0)
+          .calledWith(request),
+      );
+    });
+    it('invokes deleteOperation without error using callback', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.DeleteOperationRequest(),
+      );
+      const expectedResponse = generateSampleMessage(
+        new protos.google.protobuf.Empty(),
+      );
+      client.operationsClient.deleteOperation = sinon
+        .stub()
+        .callsArgWith(2, null, expectedResponse);
+      const promise = new Promise((resolve, reject) => {
+        client.operationsClient
+          .deleteOperation(
+            request,
+            undefined,
+            (
+              err?: Error | null,
+              result?: protos.google.protobuf.Empty | null,
+            ) => {
+              if (err) {
+                reject(err);
+              } else {
+                resolve(result);
+              }
+            },
+          )
+          .catch((err) => {
+            throw err;
+          });
+      });
+      const response = await promise;
+      assert.deepStrictEqual(response, expectedResponse);
+      assert((client.operationsClient.deleteOperation as SinonStub).getCall(0));
+    });
+    it('invokes deleteOperation with error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.DeleteOperationRequest(),
+      );
+      const expectedError = new Error('expected');
+      client.operationsClient.deleteOperation = stubSimpleCall(
+        undefined,
+        expectedError,
+      );
+      await assert.rejects(async () => {
+        await client.deleteOperation(request);
+      }, expectedError);
+      assert(
+        (client.operationsClient.deleteOperation as SinonStub)
+          .getCall(0)
+          .calledWith(request),
+      );
+    });
+  });
+  describe('listOperationsAsync', () => {
+    it('uses async iteration with listOperations without error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.ListOperationsRequest(),
+      );
+      const expectedResponse = [
+        generateSampleMessage(
+          new operationsProtos.google.longrunning.ListOperationsResponse(),
+        ),
+        generateSampleMessage(
+          new operationsProtos.google.longrunning.ListOperationsResponse(),
+        ),
+        generateSampleMessage(
+          new operationsProtos.google.longrunning.ListOperationsResponse(),
+        ),
+      ];
+      client.operationsClient.descriptor.listOperations.asyncIterate =
+        stubAsyncIterationCall(expectedResponse);
+      const responses: operationsProtos.google.longrunning.IOperation[] = [];
+      const iterable = client.operationsClient.listOperationsAsync(request);
+      for await (const resource of iterable) {
+        responses.push(resource!);
+      }
+      assert.deepStrictEqual(responses, expectedResponse);
+      assert.deepStrictEqual(
+        (
+          client.operationsClient.descriptor.listOperations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+    });
+    it('uses async iteration with listOperations with error', async () => {
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      const request = generateSampleMessage(
+        new operationsProtos.google.longrunning.ListOperationsRequest(),
+      );
+      const expectedError = new Error('expected');
+      client.operationsClient.descriptor.listOperations.asyncIterate =
+        stubAsyncIterationCall(undefined, expectedError);
+      const iterable = client.operationsClient.listOperationsAsync(request);
+      await assert.rejects(async () => {
+        const responses: operationsProtos.google.longrunning.IOperation[] = [];
+        for await (const resource of iterable) {
+          responses.push(resource!);
+        }
+      });
+      assert.deepStrictEqual(
+        (
+          client.operationsClient.descriptor.listOperations
+            .asyncIterate as SinonStub
+        ).getCall(0).args[1],
+        request,
+      );
+    });
+  });
+
+  describe('Path templates', () => {
+    describe('environment', async () => {
+      const fakePath = '/rendered/path/environment';
+      const expectedParameters = {
+        user: 'userValue',
+        environment: 'environmentValue',
+      };
+      const client = new cloudshellserviceModule.v1.CloudShellServiceClient({
+        credentials: { client_email: 'bogus', private_key: 'bogus' },
+        projectId: 'bogus',
+      });
+      await client.initialize();
+      client.pathTemplates.environmentPathTemplate.render = sinon
+        .stub()
+        .returns(fakePath);
+      client.pathTemplates.environmentPathTemplate.match = sinon
+        .stub()
+        .returns(expectedParameters);
+
+      it('environmentPath', () => {
+        const result = client.environmentPath('userValue', 'environmentValue');
+        assert.strictEqual(result, fakePath);
+        assert(
+          (client.pathTemplates.environmentPathTemplate.render as SinonStub)
+            .getCall(-1)
+            .calledWith(expectedParameters),
+        );
+      });
+
+      it('matchUserFromEnvironmentName', () => {
+        const result = client.matchUserFromEnvironmentName(fakePath);
+        assert.strictEqual(result, 'userValue');
+        assert(
+          (client.pathTemplates.environmentPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
+
+      it('matchEnvironmentFromEnvironmentName', () => {
+        const result = client.matchEnvironmentFromEnvironmentName(fakePath);
+        assert.strictEqual(result, 'environmentValue');
+        assert(
+          (client.pathTemplates.environmentPathTemplate.match as SinonStub)
+            .getCall(-1)
+            .calledWith(fakePath),
+        );
+      });
     });
+  });
 });
diff --git a/packages/google-cloud-shell/webpack.config.js b/packages/google-cloud-shell/webpack.config.js
index 2d7047889bef..b7f826274bb1 100644
--- a/packages/google-cloud-shell/webpack.config.js
+++ b/packages/google-cloud-shell/webpack.config.js
@@ -1,4 +1,4 @@
-// Copyright 2026 Google LLC
+// Copyright 2021 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
